在 C 语言中,整数类型包括下表中的标准类型以及枚举类型。
char | 符号取决于实现 |
signed char short int int long int long long int | 标准有符号整型 |
_Bool | 标准无符号整型 |
unsigned char unsigned short int unsigned int unsigned long int unsigned long long int |
每个整数类型都有如下定义的整数转换等级:
- 任何两个有符号整数类型的等级均不同,即使它们有着相同的表示
- 有符号整数类型的等级高于低精度的任何有符号整数类型的等级
- long long int 的等级高于 long int 高于 int 高于 short int 高于 signed char
- 任何无符号整数类型的等级与对应的有符号整数类型(如果有的话)的等级相同
- 任何标准整数类型的等级高于相同宽度的任何扩展整数类型的等级
- char 的等级与 signed char 和 unsigned char 相同
- _Bool 的等级低于所有其它标准整数类型的等级
- 任何枚举类型的等级与对应兼容整数类型的等级相同
- 任何扩展有符号整数类型的等级相对于其它相同精度扩展有符号整数类型的等级是由实现决定的,但仍然遵守确定整数转换等级的其它规则
- 对于所有整数类型 T1、T2 和 T3,如果 T1 的等级高于 T2,并且 T2 的等级高于 T3,那么 T1 的等级高于 T3