【发布时间】:2016-04-07 09:46:25
【问题描述】:
当我在 Turbo C 的整数变量中将 32767 添加到 1 时,我得到 -32768 而我应该得到 32768。
我想知道为什么会这样。
【问题讨论】:
-
16 位整数溢出。
-
有符号整数溢出无论如何都是 UB。
-
这是 未定义的行为,因为有符号整数溢出(您的
int是 16 位宽的 2 的补码)。请注意,当溢出 16 位有符号整数时,您甚至可能在其他平台上得到 32768。 -
@Nick 不,那不是合适的地方。它只是说明了 Turbo C 中
int的范围。