每当我运行代码时:
signed short ssh{-3};
unsigned short ussh{1};
std::cout << ussh + ssh << '\n'; // should be (65535-2+1) = 65534
我得到的输出为
-2
而不是 65534
而相同的环绕功能适用于 unsigned long 和 unsigned int。
unsigned Short 是否禁止执行回绕或者只是提升为 int?
C++ 中整数提升的规则非常明确。这两个值都将被提升为具有可以接受不改变的值的范围的类型,在您的情况下是
int
。
没有任何东西被包裹。