2

我正在尝试在我使用短整数的地方运行此代码。

int main() {
    short int i=0;
    while(++i)
        printf("%u\n", i);
}

输出(使用短整数):

 1     
 2
 3...
 32767
 4294934528
 .
 .
 4294967295(last value)

为什么在 32767 任何解释之后价值突然上涨?

我正在使用 linux(32 位)操作系统。

4

2 回答 2

2

有符号整数溢出是未定义的行为。您的程序i超出了可以存储在 a 中的范围short,因此该程序可以自由地做任何事情。

于 2013-09-23T23:46:42.077 回答
0

有符号短范围从 -32768 到 32767,无符号短范围从 0 到 65535。因此,您超出了有符号的数据大小int short

于 2013-09-23T23:55:52.440 回答