数据类型:分为整形 , 浮点型
整形: short int long longlong
整型有无符号(unsigned)和有符号(signed)两种类型,在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。无符号整型和有符号整型的区别就是无符号类型可以存放的正数范围比有符号整型中的范围大一倍,因为有符号类型将最高位储存符号,而无符号类型全都储存数字。比如16位系统中一个int能存储的数据的范围为-32768~32767,而unsigned能存储的数据范围则是0~65535。在一些不可能取值为负数的时候,可以定义为unsigned,在一些底层的嵌入式编程的数据一般都是无符号的。
short : 默认是有符号的 -32768~~32767 无符号的 0~65535 内存字节是2
int : 默认是有符号的 -2147483648~2147483647 无符号的 0~4294967295 内存字节为4
long: 默认是有符号的 -2147483648~2147483647 无符号为 0~4294967295 内存字节为4
longlong:默认有符号的 -2^63~2^63-1 无符号为0~2^64-1 内存字节为8 (vc6.0不支持longlong类型)
这些整型都是用%d输出
通常情况下 默认 longlong的字节数大于等于long的字节数大于等于int的字节数大于等于short的字节数
可以使用 sizeof()函数来看字节数的大小 : 例如 int i = 3; printf("%d\n",sizeof(i));
浮点型:float double longdouble
float是默认打印6位数 输出的时候用%f
double 输出的时候用%lf
科学记数法输出的时候用%e
float 内存为4字节 表示0的时候 要用0.0
double内存为8字节
精度表:
通常情况下 默认 longlong的字节数大于等于long的字节数大于等于int的字节数大于等于short的字节数
可以使用 sizeof()函数来看字节数的大小 : 例如 int i = 3; printf("%d\n",sizeof(i));
单精度浮点数(float)与双精度浮点数(double)的区别如下:
(1)在内存中占有的字节数不同
单精度浮点数在机内占4个字节
双精度浮点数在机内占8个字节
(2)有效数字位数不同
单精度浮点数有效数字8位
双精度浮点数有效数字16位
(3)所能表示数的范围不同
单精度浮点的表示范围:-3.40E+38 ~ +3.40E+38
双精度浮点的表示范围:-1.79E+308 ~ +1.79E+308
(4)在程序中处理速度不同一般来说,CPU处理单精度浮点数的速度比处理双精度浮点数快
通常情况下 默认 longdouble的字节数大于等于double的字节数大于float的字节数
可以使用 sizeof()函数来看字节数的大小 : 例如 double i = 3.0; printf("%lf\n",sizeof(i));
注意:1. 默认情况下 浮点数都是 double类型 所以 在定义 浮点数的时候 需要在 后面加上f 例如 float l = 12.4F
2.输出的时候 如果是 printf(%数字1.数字2 f) 代表了 全部的长度为数字1 小数点后面的长度为数字2 必须是有效范围内进行四舍五入, 只有数字一的长度包括了数字2的长度才会有作用 否则无效当数字1是负数的时候,是右对齐,当数字1是正数的时候,是左对齐。
3.scanf 输入浮点型的时候 必须一一对应 float对应 %f double对应%lf longdouble 对应 %lf
&: 取地址符 int a ; printf("%p\n",&a); 会打印出a所在的地址,
改变一个有初始值的数的值 int a = 10; printf("前%d\n",a); scanf("%d",&a); printf("%d\n",a);
注意: 1 scanf 必须是取要改变数值a的地址,而不是定义的这个a.
2 scanf 输入的时候 必须和前面定义的这个数据的类型相同 例如 前面是 int 那么 scanf里面必须是%d 如果前面是String 那么scanf必须是%s
3 scanf 输入的时候 可以连续输入多个值 例如 int a =1,b=10; printf("前:%d,%d\n",a,b); scanf("%d%d",&a,&b); printf("后:%d,%d\n",a,b); 连续输入多个的时候要默认用空格分开,要连着写两个转运符,print打印的时候需要写两个转运符中间用逗号分开。
4 scanf 输入的分隔符 可以自定义分割符 scanf("%d 中间的分隔符 可以是逗号 字母 %d ",&a,&b); 用哪一种分隔符号分开 在输入的时候就必须对应哪一种符号。不然会出现问题。
5 scanf 输入的时候不能加入\n这个换行符,不然会出现问题。导致无法输入。
通常情况下 默认 longlong的字节数大于等于long的字节数大于等于int的字节数大于等于short的字节数
可以使用 sizeof()函数来看字节数的大小 : 例如 int i = 3; printf("%d\n",sizeof(i));