在阅读了关于整数提升的相关问题之后,似乎是整数提升或仅适用于小整数类型(例如short int或)的常见理解char.
但是,我想知道为什么不应该将unsigned intie值的变量15提升为一个int.毕竟,它的转换等级等于int和unsigned int的等级,如下面引用中的语句(1)所要求的那样.
作为一个int可以代表值15而没有任何问题(在我知道的所有平台上),它应该转换为int.
如果可以使用int或unsigned int,则可以在表达式中使用以下内容:
具有整数类型的对象或表达式,其整数转换等级小于或等于int和unsigned int的等级.
_Bool,int,signed int或unsigned int类型的位字段.
如果int可以表示原始类型的所有值(由宽度限制,对于位字段),则该值将转换为int; 否则,它将转换为unsigned int.这些被称为整数促销.整数促销不会更改所有其他类型.
但是,我想知道为什么ie值的unsigned int变量
15也不应该被提升为一个int.[...] aint可以15毫无问题地代表价值
这个陈述有两个问题:
int"; 它意味着"升级为int或unsigned int".因此,"促进"一个unsigned int没有意义:它已经被提升了.int能够表示值的事实15是无关紧要的,因为int它不能表示所有的值unsigned int.