我正在尝试运行此代码,其中我使用short int。
int main() {
short int i=0;
while(++i)
printf("%u\n", i);
}
输出(使用短int):
1
2
3...
32767
4294934528
.
.
4294967295(last value)
为什么在32767之后有任何解释突然跳跃?
我正在使用linux(32位)操作系统。
答案 0 :(得分:2)
有符号整数溢出是未定义的行为。你的程序将i
超出了short
中可以存储的范围,因此程序可以自由地执行任何操作。
答案 1 :(得分:0)
有符号短消息的范围为-32768到32767,无符号短消息的范围为0到65535.因此,您超出了已签名的int short
的数据大小。