在阅读了相当多关于整数提升的问题后,似乎普遍认为整数提升或仅适用于小整数类型,例如short int
or char
。
但是,我想知道为什么不应该将unsigned int
ie 值的变量也提升为 an 。毕竟,它的转换等级等于 int 和 unsigned int 的等级,正如下面引用中的语句 (1) 所要求的。15
int
由于可以毫无问题int
地表示该值(在我知道的所有平台上),它应该转换为 int。15
可以在可以使用 int 或 unsigned int 的表达式中使用以下内容:
整数类型的对象或表达式,其整数转换等级小于或等于 int 和 unsigned int 的等级。
_Bool、int、signed int 或 unsigned int 类型的位域。
如果 int 可以表示原始类型的所有值(受宽度限制,对于位域),则该值将转换为 int;否则,它将转换为无符号整数。这些被称为整数促销。整数提升不会改变所有其他类型。