Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
看看这段代码:
void main () { int i = -1; unsigned u = 1; cout << u + i; }
添加了 u(无符号)和 i(有符号),因此 i 必须转换为无符号类型,因此应将其解释为 ( (2 ^ 32) - 1 ),并且表达式应从:-1 + 1 更改为( (2 ^ 32) - 1 ) + 1 但是当我运行代码时结果为 0 为什么?
-1在unsigned 可以容纳的最大可能UINT_MAX数的无符号表示中 ( )。
-1
UINT_MAX
由于 的属性,将 1 添加到此环绕unsigned,因此等于 0。
unsigned
(无符号)-1 是 0xFFFFFFFF。1 + 0xFFFFFFFF = 0x100000000 溢出 int,结果为 0。