最初 K&R 给出的关键字 | C90 标准添加的关键字 | C99 标准添加的关键字 |
int | signed | _Bool |
long | void | _Complex |
short | _Imaginary | |
unsigned | ||
char | ||
float | ||
double |
表格数据来自《C Primer Plus》P42 表3.1 C语言的数据类型关键字
其中有 3 个用来修饰基本类型的关键字:short、long、unsigned
数据类型中的 3 个修饰关键字可以与其他或自身组成新的数据类型。对于这几点应当注意以下几点:
- short int 类型(简写为 short)占用类存可能比 int 类型少,常用语小树枝的场景以节省空间。于 int 类似,short 是有符号的类型。
- long int 类型(简写为 long)占用内存可能哔 int 类型多,适用于较大数值的场景。与 int 类似,long 是有符号的。
- long long int 或者 long long(C99 标准加入)占用的存储空间可能比 long 多,适用于更大数值的场合。该类型至少占 64 位。与 int 类似,long long 是有符号类型。
- unsigned int 或 unsigned 只用于非负值的场合。这种类型与有符号类型表示的范围不同。例如16 位 unsigned int 允许的取值范围是 0~65535,而不是 -32768~32767.用于表示符号的位现在用于表示另一个二进制位,所以无符号整形可以表示更大的数。
- 在 C90 标准中,添加了 unsigned long int 或 unsigned long 和 unsigned short int 或 unsigned short 类型。C99 标准又添加了unsigned long long int 或 unsigned long long。
- 在任何有符号类型前面添加 signed,可强调实用有符号类型的意图。例如:short、short int、signed short、signed short int 都表示同一种类型。
以上列表数据来自《C Primer Plus》P47 3.4.2 其他整数类型
要注意的是 long long 类型是 C99 中新增的,所以使用是一定要确认编译环境是否支持 C99 的编译。