我试图运行此代码,我使用短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位)操作系统 .
有符号整数溢出是未定义的行为 . 你的程序推送 i 超出了 short 中存储的范围,所以程序可以自由地做任何事情 .
i
short
带符号短路的范围为-32768到32767,无符号短路的范围为0到65535.因此,您超出了签名 int short 的数据大小 .
int short
2 回答
有符号整数溢出是未定义的行为 . 你的程序推送
i
超出了short
中存储的范围,所以程序可以自由地做任何事情 .带符号短路的范围为-32768到32767,无符号短路的范围为0到65535.因此,您超出了签名
int short
的数据大小 .