LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 171|回复: 0

整型提升

[复制链接]
发表于 2024-1-28 23:39:25 | 显示全部楼层 |阅读模式
整型类型的对象可以转换为另一个更宽的整型类型,即,可表示更大的一组值的类型。 这种扩展类型的转换称为“整型提升”。 利用整型提升,你可以在可使用其他整型类型的任何位置将以下类型用于表达式:

char 和 short int 类型的对象、文本和常量

枚举类型

int 位域

枚举器

C++ 提升是“值保留”,即提升后的值一定与提升前的值相同。 在值保留提升中,如果 int 可以表示原始类型的完整范围,较短的整型类型的对象(如 char 类型的位域或对象)将提升到 int 类型。 如果 int 无法表示完整范围的值,该对象将提升到 unsigned int 类型。 尽管此策略与标准 C 中使用的策略相同,但值保留转换不保留对象的“符号”。

值保留提升和保留符号的提升通常会生成相同的结果。 但是,如果提升的对象显示如下,它们可能生成不同的结果:

/、%、/=、%=、<、<=、> 或 >= 的操作数

这些运算符依赖于用于确定结果的符号。 当值保留和符号保留提升应用于这些操作数时,它们将生成不同的结果。

>> 或 >>= 的左操作数

这些运算符在移位运算中会区别对待有符号的数量和无符号的数量。 对于有符号的数量,右移位运算会将符号位传播到空位位置,而空位位置则以无符号数量填充零。

重载函数的参数,或重载运算符的操作数(取决于该操作数类型用于参数匹配的符号)。 有关定义重载运算符的详细信息,请参阅重载运算符。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表