无符号短整型的环绕功能

问题描述 投票:0回答:1

每当我运行代码时:

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++ integer-overflow
1个回答
0
投票

C++ 中整数提升的规则非常明确。这两个值都将被提升为具有可以接受不改变的值的范围的类型,在您的情况下是

int

没有任何东西被包裹。

© www.soinside.com 2019 - 2024. All rights reserved.