【发布时间】:2017-05-13 19:40:02
【问题描述】:
我已经多次进行签名溢出,但每次都使用 turbo c 环绕。 例如:
#include <stdio.h>
void main() {
int i = 100000;
printf("%d", i);
getch();
}
输出为-31072,这是完成环绕后的预期输出。
在二进制中100000(dec) 是11000011010100000,最后 16 位被存储
是1000011010100000。在两个补码表示中1000011010100000 是-31072。
【问题讨论】:
-
看看this。它很好地解释了未定义的行为,并专门讨论了未定义的行为以及我们有时使用夸张来描述它的方式。