一、整型:不带数点的数据
1、有符号整型:最高位的二进制用于表示正负,0代表正数,1代表负数。
由于有符号整型使用较多,所以编译器默认signed可以省略,不加就代表加。
signed char 1 -128 ~ 127
signed short 2 -32768 ~ 32767
signed int 4 -2147483648 ~ 2147483647
signed long 4|8
signed long long 8 -9223372036854775808 ~ 9223372036854775807
注意:long类型 Linux32 4字节,Linux64 8字节,Windows系统 4字节
2、无符号整型:所有的二进制位都用来表示数据,只能表示正数。
unsigned char 1 255
unsigned short 2 65535
unsigned int 4 4294967295
unsigned long 4|8
unsigned long long 8 18446744073709551615
无符号类型一般用于计数,unsigned不能省略,使用起来比较麻烦,标准库为了让我们方便使用,在stdint.h头文件中对它们进行的类型重定义,分别是:
uint8_t uint16_t uint32_t uint64_t size_t
注意:limits.h 头文件中定义了各类型的最大值和最小值宏。
二、浮点型(实型):
小数点是浮动的,也就是带小数点的数据,采用科学计算数法存储,由符号位+指数域+小数域组成,这种存储格式,运算速度慢、又不太准确(小数点后六有效),所以尽量少用。
1、单精度:float 4
2、双精度:double 8
3、高精度:long double 12|16
if(0.000001 > f && f > -0.000001) // 判断"零值"
三、模拟:
1、char 字符型:字符就是符号或图案,在计算机中以整数形式存储,当需要显示时根据ASCII码表中的对应关系显出相应的符号或图案。
'\0' 0
'0' 48
'A' 65
'a' 97
2、bool 布尔型:C语言中没有真正的布尔类型,因为先有的C语言后出现的布类型,在C89之后以打补丁的方式新增布尔类型,需要包含stdbool.h头文件。
bool 1字节
true 4字节 整数1
false 4字节 整数0
printf("%d %d %d\n",sizeof(bool),sizeof(true),sizeof(false));
// g++ 1 1 1
// gcc 1 4 4