|
整型类型的对象可以转换为另一个更宽的整型类型,即,可表示更大的一组值的类型。 这种扩展类型的转换称为“整型提升”。 利用整型提升,你可以在可使用其他整型类型的任何位置将以下类型用于表达式:
char 和 short int 类型的对象、文本和常量
枚举类型
int 位域
枚举器
C++ 提升是“值保留”,即提升后的值一定与提升前的值相同。 在值保留提升中,如果 int 可以表示原始类型的完整范围,较短的整型类型的对象(如 char 类型的位域或对象)将提升到 int 类型。 如果 int 无法表示完整范围的值,该对象将提升到 unsigned int 类型。 尽管此策略与标准 C 中使用的策略相同,但值保留转换不保留对象的“符号”。
值保留提升和保留符号的提升通常会生成相同的结果。 但是,如果提升的对象显示如下,它们可能生成不同的结果:
/、%、/=、%=、<、<=、> 或 >= 的操作数
这些运算符依赖于用于确定结果的符号。 当值保留和符号保留提升应用于这些操作数时,它们将生成不同的结果。
>> 或 >>= 的左操作数
这些运算符在移位运算中会区别对待有符号的数量和无符号的数量。 对于有符号的数量,右移位运算会将符号位传播到空位位置,而空位位置则以无符号数量填充零。
重载函数的参数,或重载运算符的操作数(取决于该操作数类型用于参数匹配的符号)。 有关定义重载运算符的详细信息,请参阅重载运算符。
|
|