【发布时间】:2017-08-12 17:21:05
【问题描述】:
void main () {
int i;
if (i < 0) { i = -i; };
}
谁能帮我理解为什么上面的程序会发生溢出?
【问题讨论】:
-
未定义的行为。变量未初始化。取反可能的最大负整数在二进制补码算术中产生相同的值
-
在 2 的补码中,| INT_MIN | > INT_MAX
-
当
i == INT_MIN用二进制补码表示时。
标签: c integer integer-overflow