0

在研究 C 转换时,我发现了一段关于 Integer Promotions 的我不太了解的段落,它说:

"Integer types smaller than int are promoted when an operation is performed on them. If all values of the original type can be represented as an int, the value of the smaller type is converted to an int; otherwise, it is converted to an unsigned int"

考虑到:

  1. 任何无符号整数类型的秩等于相应有符号整数类型的秩

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

问题是:为什么小于 int 的类型不应该用 int 表示?为什么 unsigned int 可以代表一个 int 不应该代表的值?

提前致谢。

4

1 回答 1

0

尽管 a 的short等级低于a int,但它可以是相同的大小(以位为单位),例如sizeof(int) == sizeof(short) == 2在 16 位系统上。所以 anunsigned short可能能够保持大于 的值INT_MAX

对于您问题的第二部分,其答案大致相同: anunsigned int可以保存不能表示为 int 的值,即INT_MAX+1.. UINT_MAX

于 2012-04-26T15:32:21.007 回答