1. 有符号类型
- 既包含非负数又包含负数
整数类型 int
- 和长整数类型完全一样
字符类型 char
- 包含256个不同的整数,每个整数可以代表一个字符。可以在程序中以字符的方式写(两个单引号中间加个字符),然后计算机会把它替换成相应的整数存放在内存里. 也可以直接在程序中写字符对应的整数.
- ASSIC码表列出了所有整数和字符之间对应的关系
- ‘a’ 97
- ‘A’ 65
- ‘0’ 48
- 所有小写字母对应的ASSIC码是连续的,a最小z最大,同理大写字母,和阿拉伯数字
- ‘d’ - ‘a’ 计算机会把两个字符替换成相应的整数在运算,结果应该是字符’d’到字符’a’的的距离
- 256个不同的整数分成两组,每组是128个
- 其中一组数字在所有计算机上整数和字符的对应关系都是一样的,另外128个在不同计算机上是不一样的
- 前128个整数,固定的,从0到127
- 后128个整数,有可能是-128到-1,也有可能是128到255.
- 常见的字符都在前一组里,还有些特殊的字符’\n’, ‘\r’
短整数类型 short
- 包含65536个不同的整数
长整数类型 long
- 包含2的32次方个不同的整数
2. 无符号类型
- 在有符号类型前加unsigned
- 每个有符号类型都有一个对应的无符号类型
- 和有符号类型包含的数字范围一样,只包含非负数不包含负数
- char => unsigned char, int => unsigned int
3. 下图表示有符号类型数字之间的关系
- 这些数据类型,他们所包含的数字是相互重叠的,一个数字离0越近,包含它的数据类型就越多
- 学数据类型的目的就是确定得到的存储区应该用来存放什么类型数字的
4. 浮点类型
- 单精度浮点类型 float
- 双精度浮点类型 double
- 在程序中写了一个带小数点的数字,默认是双精度浮点类型的
- 但如果在这个待小数点的数字后面加上字母f,就变成单精度浮点烈性
5. 布尔类型
- 整数可以当做布尔值使用, 1代表真, 0代表假
6. 数据类型和占位符的对应关系
- %c 显示字符, %hhd 或 %hhu 显示字符对应的整数
7. sizeof 关键字
- 计算一个存储区里包含的字节个数
- 返回的都是整数类型存储区包含的字节个数
- int val = 1; sizeof(val);
- sizeof(int);
- sizeof(1);
- sizeof(val = 1);
- 赋值语句也可以当数字使用
- 需要注意的是, sizeof后面的语句如果对存储区进行了修改,这个修改是不会生效的
- 下图是不同类型存储区的大小