数据类型
类别 | 类型名称 | 关键字/说明 |
---|---|---|
基本类型 | ||
整数类型 | 短整型 | short |
整型 | int |
|
长整型 | long |
|
长长整型 | long long (C99) |
|
无符号短整型 | unsigned short |
|
无符号整型 | unsigned int |
|
无符号长整型 | unsigned long |
|
浮点类型 | 单精度浮点型 | float |
双精度浮点型 | double |
|
扩展双精度 | long double |
|
字符类型 | 字符型 | char |
无符号字符型 | unsigned char |
|
构造类型 | ||
数组 | type[] 或 type[n] |
|
结构体 | struct |
|
共用体 | union |
|
枚举 | enum |
|
指针类型 | type * (如 int * , char * ) |
|
空类型 | 无类型 | void |
- 布尔类型(C99): 关键字:
_Bool
或<stdbool.h>
中的bool
(true
/false
)。 大小:通常1字节。 - 复数浮点类型(c99):
float _Complex
,double _Complex
,long double _Complex
。 - 大小依赖平台: 具体大小可通过
sizeof
运算符获取,如sizeof(int)
。 - 字面量后缀:如
123L
(long
)、3.14f
(float
)、ULL
(unsigned long long
)。 - 标准C中对任何一种数据类型的字节大小(所占位数)并没有严格意义上的规定。
- 标准C中以int类型作为基准,int类型占一个机器字长,char型小于int类型。float类型和double类型大于int类型。
- 标准C中只有大小范围的规定,并没有规定数据类型一定的字节数。
- 8位一个字节。
- 标准C中规定的是0 ~ 127个字符,后来补充到了255。共256个。
- 在标准C中,char类型有无符号是未定义的。
- char型一般占一个字节8位;
- int一般占一个字长,4个字节32位;
- short型占2个字节16位;
- long型和float型一般与int一样大;
- double类型相当于两个float类型64位。
类型转换
-
隐式类型转换。不同类型运算时,会自动向所占字节数多的或是精度比较高的靠拢。
-
显式类型转换(强制类型转换)
特殊性
- 布尔型bool
- 是一个逻辑型,在新的C标准中加入的数据类型。一般可以用整型值代替。
- true 用1表示 和 false 用0表示
- 头文件 #include
- float类型
- 其只能表达一个范围,不能表达非常精确的值。
- 判断float类型数是否等于0,不能直接判断,要与0做减法判断差值是否小于很小的数,比如1e-6。
- char类型有无符号未定义
- 不同形式的0值
- '0' "0" '\0' NULL
- 数据类型与后续代码中所使用的输入输出要相匹配
- 例如 int 使用 %d,要互相匹配,不要自相矛盾。