【发布时间】:2021-11-11 07:04:20
【问题描述】:
我写了代码:
int a = -1U;
cout << a;
为什么输出是 -1 而不是 2^w-1?
如:
long long a = -1U;
cout << a;
输出结果为
4294967295
【问题讨论】:
-
尝试启用编译器警告。您将收到有关可能的整数溢出的警告。
-
2^w-1超出了int a的范围。 -
检查 int 的范围是多少。这不是你想的那样。并且将 -1u 分配给 long long 将使任何代码审查失败。
标签: c++ unsigned-integer