2

6.3.1.1 状态

有符号整数类型的秩应大于任何精度较低的有符号整数类型的秩。

long long int 的rank 大于long int 的rank,long int 的rank 大于int 的rank,short int 的rank 大于signed char 的rank。


那么,难道不是这样吗

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)
4

2 回答 2

4

刚刚找到我自己的答案。这是不允许的,根据 6.2.5 (8)

对于任何两个具有相同符号和不同整数转换等级的整数类型(见 6.3.1.1),具有较小整数转换等级的类型的值范围是另一个类型的值的子范围。

于 2010-06-22T08:17:16.587 回答
0

您对 char 变量的假设是错误的。在limits.h中,CHAR_BIT是8。你有32。

在标准“5.2.4.2.1 整数类型的大小”中,将 CHAR_BIT 定义为 8。

于 2010-06-22T13:55:44.907 回答