在C语言中,整型数据类型分为多种,它们通过不同的关键字定义,并且有不同的存储大小和取值范围。
1. char
存储大小:通常为1字节(8位)
取值范围:-128到127(如果使用有符号类型),或0到255(如果使用无符号类型)
2. signed char
存储大小:1字节
取值范围:-128到127
3. unsigned char
存储大小:1字节
取值范围:0到255
4. short int`或short
存储大小:通常为2字节
取值范围:-32,768到32,767(如果使用有符号类型),或0到65,535(如果使用无符号类型)
5. unsigned short int或 unsigned short
- 存储大小:通常为2字节
- 取值范围:0到65,535
6. int`
存储大小:至少为2字节,但通常是4字节
取值范围:-2,147,483,648到2,147,483,647(如果使用有符号类型),或0到4,294,967,295(如果使用无符号类型)
7. unsigned int或 unsigned
存储大小:与`int`相同
取值范围:0到4,294,967,295
8. long int或 long
存储大小:至少为4字节,但通常是4字节或8字节
取值范围:-2,147,483,648到2,147,483,647(如果使用有符号类型,且大小为4字节),或更大的范围如果大小为8字节。
9. unsigned long int或unsigned long
存储大小:与`long int`相同
取值范围:0到4,294,967,295(如果大小为4字节),或更大的范围如果大小为8字节。
10. long long int或 long long
存储大小:至少为8字节
取值范围:-9,223,372,036,854,775,808到9,223,372,036,854,775,807(如果使用有符号类型)
11.unsigned long long int` 或 unsigned long long
存储大小:与`long long int`相同
取值范围:0到18,446,744,073,709,551,615
浮点型数据类型用于处理带有小数部分的数值。C语言主要支持三种浮点型数据类型:
float:
描述: float 类型用于存储单精度浮点数。
大小: 通常占用 32 位(4 字节)。
精度: 大约有 6 到 7 位的十进制有效数字。
表示范围: 约为 ±1.2E-38 到 ±3.4E+38。
double:
描述: double 类型用于存储双精度浮点数,提供更高的精度和更大的范围。
大小: 通常占用 64 位(8 字节)。
精度: 大约有 15 到 16 位的十进制有效数字。
表示范围: 约为 ±2.3E-308 到 ±1.7E+308。
long double:
描述: long double 类型用于存储长双精度浮点数,其精度和范围至少应与 double 相同,但在某些平台上可能会更高。
大小: 至少占用 64 位,但可能是 80 位或更多,具体取决于平台。
精度: 至少与 double 相同,但可能更高。
表示范围: 至少与 double 相同,但可能更大。
C语言中的浮点数存储遵循IEEE 754标准,这是一个被广泛接受的浮点数算术标准。IEEE 754定义了单精度(32位)和双精度(64位)浮点数的存储格式,以及扩展精度(例如80位)的格式,但后者在C语言中不是必须支持的。
单精度浮点数(float)
总位数: 32位
组成部分:
符号位(Sign bit): 1位,0表示正数,1表示负数。
指数位(Exponent bits): 8位,表示指数的偏移值。偏移量为127,即存储的指数值需要减去127得到实际的指数值。
尾数(Mantissa): 23位,表示小数点后的有效数字。由于二进制科学记数法的小数点前总是1,这一位在存储时被省略了,但实际上它始终存在。
双精度浮点数(double)
总位数: 64位
组成部分:
符号位(Sign bit): 1位
指数位(Exponent bits): 11位,偏移量为1023。
尾数(Mantissa): 52位,同样的,隐含的最高位1不存储。
存储格式示例
对于float类型的1.0:
符号位: 0 (正数)
指数位: 127 (二进制为01111111)
尾数: 0 (二进制为00000000000000000000000)
对于double类型的1.0:
符号位: 0 (正数)
指数位: 1023 (二进制为11111111111)
尾数: 0 (二进制为0000000000000000000000000000000000000000000)
内存布局
在内存中,这些位按照符号位、指数位、尾数位的顺序连续存储,构成整个浮点数的二进制表示。
字符型数据
1.字符型数据的表示
字符型数据是用单引号括起来的单个字符,如'a'、'b'、'='、'+'、'?'都是合法字符型数据。在这里单引号只起定界的作用,并不代表字符。单引号中的字符不可以只是单引号(’)和反斜杠(\),因为反斜杠(\)本身就是一个转义字符。
2.转义字符
转义字符是C语言中表示字符的一种特殊形式。通常使用转义字符表示ASII字符集中不可打印的控制字符和特定功能的字符,如单引号字符(’)、双引号字符(”)和反斜杠的表示(\)。
转义符用反斜线\后面跟一个字符或一个八进制或十六进制数表示。