gpt4 book ai didi

c++ - operator << 如果结果是 unsigned int 或 unsigned short 则解释算术运算

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:34:29 25 4
gpt4 key购买 nike

我在fedora 19 64bits下使用gcc 4.8.3

unsigned u1=10, u2=42;
unsigned short us1=10, us2=42;

int main() {
cout << "u1-u2="<<u1-u2<<", us1-us2="<<us1-us2<<endl;
}

结果:u1-u2=4294967264,us1-us2=-32

<< 操作符似乎将第二个操作的结果解释为一个signed short而它将第一个操作的结果解释为 unsigned int

最佳答案

作为 - 和大多数其他算术运算符的操作数,任何小于 int 的整数类型值都会被提升为 int

因此 us1 - us2 的行为与 (int)us1 - (int)us2 相同。

这个规则在现代 C++ 中非常烦人,但它是从最早的 C 版本中引入的(因为 int 大小的寄存器用于算术运算)并且现在更改它会破坏太多代码。

关于c++ - operator << 如果结果是 unsigned int 或 unsigned short 则解释算术运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25426305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com