Tag: 类型 促销

unsigned char总是被提升为int吗?

假设如下: unsigned char foo = 3; unsigned char bar = 5; unsigned int shmoo = foo + bar; 是否保证将foo和bar值提升为用于表达式foo + bar的求值的int值 – 或者是否允许实现将它们提升为unsigned int ? 在第6.2.5节第8段中: 对于具有相同签名和不同整数转换等级的任何两个整数类型(参见6.3.1.1),具有较小整数转换等级的类型的值范围是另一种类型的值的子范围。 在第6.2.5节第9段中: 如果int可以表示原始类型的所有值,则该值将转换为int ; 否则,它将转换为unsigned int 。 保证具有较小整数转换等级的整数类型具有作为另一类型的值的子范围的值的范围似乎取决于整数类型的有符号性。 signed char对应于signed int unsigned char对应unsigned int 这是否意味着unsigned char值只能保证在unsigned int的子范围内,而不一定是int ? 如果是这样,那是否意味着实现理论上可以有一个unsigned char值,它不在int的子范围内?