6.3.1.1国家
有符号整数类型的等级应大于精度较低的任何有符号整数类型的等级。
long long int的等级应大于long int的等级,其应大于int的等级,其应大于short int的等级,short int应大于signed char的等级。
那么,情况可能不是这样吗
signed char has 32 bits (1 padding, 1 sign, 30 precision)
unsigned char has 32 bits (0 padding, 0 sign, 32 precision)
signed int has 32 bits (1 padding, 1 sign, 30 precision)
unsigned int has 32 bits (2 padding, 0 sign, 30 precision)
答案 0 :(得分:4)
刚刚找到了我自己的答案。根据6.2.5(8)
,这是不允许的对于具有相同签名和不同整数转换等级的任何两个整数类型 (见6.3.1.1),具有较小整数转换等级的类型的值范围是a 另一种类型的值的子范围。
答案 1 :(得分:0)
您对char变量的假设是错误的。在limits.h中,CHAR_BIT为8.你有32。
在标准'5.2.4.2.1整数类型的大小'中,将CHAR_BIT定义为8。