整数提升

整型的对象可以转换为另一个宽整型 (即可可以表示较大设置值的类型。) 转换的此扩大类型称为 “整数提升”。整数提升,在表达式中使用下面,实际上可以使用另一个整数类型:

  • 对象、类型 char 和 short int文本和常数

  • 枚举类型

  • int 位域

  • 枚举数

C++ 提升 “值保留”。即提升后的值一定相同的值在升级之前。 在值保留的提升,较短整型对象 (如位域或对象类型 char) 提升键入 int ,如果 int 可以表示所有基元类型。 如果 int 不能表示全面值,则对象提升键入 unsigned int。 尽管此方案将与 ANSI C 中使用时,值将转换不想保留 “signedness”对象。

值保留通常保留 signedness 将产生相同的结果的提升和提升。 但是,因此,如果提升的对象是下列值之一,它们可能产生不同的结果:

  • /、 %、 /=、 %=AMP_LTAMP_LT=AMP_GT或 **AMP_GT=**操作数

    这些运算符决定的结果符号。 因此,值保留和符号保留提升产生不同的结果,在对这些操作数。

  • AMP_GTAMP_GT 或 **AMP_GTAMP_GT=**左操作数

    ,在执行移位操作时,这些运算符将不同的有符号和无符号数。 为签名的数量,转换的权限导致符号位传播到操作空出的数位位置。 对于未签名的数目,则操作空出的数位位置是零填充。

  • 对于依赖于该操作数的类型 signedness 参数匹配的重载运算符的重载函数或操作数的参数。 (有关更多 重载运算符 参见有关定义重载运算符。)

请参见

参考

标准转换