变量是存储数据的小盒子,不是里面的数据
变量的定义格式
//数据类型 变量名;
int a ;
// 练习
// 练习1:两个数相加
# include <stdio.h>
int main()
{
int a = 10;
int b = 20;
int c = a + b;
printf("a和b的和是%d\n", a + b);
// 练习2 用一个变量去表示微信的余额
// 需求 一开始微信的余额 为100元收到了 一个二元的红包
// 经常发生改变的数据 我们可以用变量来表示
int money = 100;
money = money+ 2;
printf("%d", money);
}
变量的注意事项
-
变量里只能存在一个值
-
变量名不允许重复定义
-
一条语句可以定义多个变量
-
变量在使用之前一定要进行赋值变量如果用到了,一定要赋值才可以
-
变量的作用域范围
// 示例
#include <stdio.h>
int main()
{
// 1.变量中只能存一个值
int a = 10;
printf("%d\n", a);
a = 20;
printf("%d\n", a);
// 2.变量名不允许重复
int a = 20;
printf("%d", a);
// 3.一条语句可以定义多个变量(了解) 不方便阅读
int b = 10, c = 20;
printf("%d\n%d\n", b, c);
// 4.变量在使用之前一定要赋值
int e;
printf("%d", e);
// 5.变量的作用范围 先不讲
return 0;
}
计算机的存储规则
在计算机中,计算机中任意数据都是以二进制的形式来存储的
数据类型的作用
8bit = 1个字节
int 通常占用4个字节 也就是 32个bit
数据类型
整数
-
从小到大的
-
int是整数的默认数据类型
-
不同的数据类型所表示范围和内存大小都是不一样的,由编译器来决定的,可以用size of来确定
-
short
-
int
-
long
-
long long(C99)
整数案例
#include <stdio.h>
int main()
{
// 1.定义short、int、long、long long四种数据类型的变量
// 格式:数据类型 变量名 = 数据值;
// short 短整型 windows 2个字节 (-2768~32767)
// 如果超出数据范围那么它的数据就会出错
// short 完整形态 short int a = 10; 表示是一个短整型 但是我们一般省略不写
short a = 10;
printf("%d\n", a);
// int 整数 windows 4个字节 (-2147483648 ~ 2147483647)
int b = 100;
printf("%d\n", b);
// long 长整型 windows 4个字节 (-2147483648 ~ 2147483647) 给long赋值一般要在最后加一个L大小写都可以但是我们一般都写大写的
// linux 32位 6个字节 64位 8个字节
long c = 1000L;
// printf("%ld\n",c); 为什么要加 l 呢 因为加l才能证明它是一个长整型的数据
printf("%ld\n", c);
// long long(c99) 超长整形 windows 8个字节 (19位数)
// 打印的时候和数据后面要加两个 L
long long d = 10000LL;
printf("%lld\n",d);
// 2.利用sizeof测量每一种数据类型占用多少字节;
// zu 表示的就是我打印出来的sizeof的结果
// printf("%zu\n",sizeof(a)); sizeof()小括号里面可以写 数据类型 也可以直接写变量的名字
// short
printf("%zu\n", sizeof(short));
printf("%zu\n",sizeof(a));
// int
printf("%zu\n", sizeof(int));
printf("%zu\n", sizeof(b));
// long 不管是32的windows还是64的windows 都是占用四个字节的
printf("%zu\n", sizeof(long));
printf("%zu\n", sizeof(c));
// long long 占用八个字节
printf("%zu\n", sizeof(long long));
printf("%zu\n", sizeof(d));
return 0;
}
整数扩展
-
用完整形态写出来的跟不写的结果是一样的 写完整形态的时候 除int外 其他的完整形态 都可以在数据类型后面加 int
如下
#include <stdio.h> int main() { // 此为演示的 short short int a = 10; printf("%d",a); return 0; }
-
有符号整数和无符号整数的定义情况 在定义变量的时候默认是有符号的
-
signed 有符号整数 正数负数
示例
// 默认的情况下 可以省略不写 signed int e = 100; printf("%d\n", e);
-
unsigned 无符号整数 只有正数
示例
// 定义一个变量表示序号(了解) // short:-32768~32767 // 无符号的short 取值范围就是 unsigned short:0~65535 unsigned short num1 = 65535; printf("%u\n", num1); // 如果给它一个负数 那么它的数据就会出问题 // 切记 打印的时候 不是%d 而是 %u unsigned int f = 200; printf("%u\n", f);
-
小数(后面的精度不用怎么纠结)
-
掌握如何定义两种类型的变量
-
float(占用4个内存)
-
float 单精度小数 精确小数点后6位 占用四个字节 最好在后面加一个f大小写都行
float a = 0.1F; printf("%f\n", a); // 如果想保留两位小数的话 可以这么写 .2就表示保留两位 printf("%.2f\n",a);
-
-
double(占用八个内存)
-
double 双精度小数(精确小数点后15位) windows占8个字节(38位) 使用占位符 double 使用 %lf 会自动四舍五入(包括0.5)
double b = 1.78; printf("%.2lf\n", b);
-
-
long double(了解即可)
-
long double 高精度小数 (精确小数点后18~19位)windows占8个字节 其他(12,15) 编辑器决定
long double c = 3.1415926535L; printf("%.2lf\n", c);
-
-
sizeof 测量字节示例
printf("%zu\n", sizeof(a)); printf("%zu\n", sizeof(b)); printf("%zu\n", sizeof(c));
-
小数的数据类型无法跟unsigned使用
-
小数的取值范围比整数要大
-
C语言中的小数默认是double类型的
-
不可以与unsigned组合,unsigned只能和整数类型组合
字符
-
char 占用1个内存
取值范围:ascll码表中的字母,数字,英文符号
-
示例
#include <stdio.h>
int main()
{
// 1.定义 char 数据类型的变量
// char字符 取值范围 ascii码表中所有的内容 windows1个字节
char c1 = 'c';
printf("%c\n", c1);
char c2 = '1';
printf("%c\n", c2);
char c3 = 'A';
printf("%c\n", c3);
char c4 = '你';// 如果输入中文就会报错 那是因为只能输入 ASCII表中的数据
printf("%c\n", c4);
/*char c[] = "你好啊";
printf("%s\n", c);
printf("%zu\n", sizeof(c));
*/
// 2.利用size测试占用多少字节
// 可以看到占用的都是一个字节
printf("%zu\n", sizeof(c1));
printf("%zu\n", sizeof(c2));
printf("%zu\n", sizeof(c3));
printf("%zu\n", sizeof(c4));
return 0;
}