#include <stdio.h> int main(void) { short int a=32767,b=32767,c; a=a+b; //下面三行代码是实现两数交换的功能 b=a-b; a=a-b; c=sizeof(short int); printf("a=%d,b=%d\n",a,b); printf("sizeof=%d",c); return 0; }
你这里能算出"正确"结果是 回绕了 SHRT_MAX+1 == SHRT_MIN SHRT_MIN-1 == SHRT_MAX 算出的结果自然符合"预期" 要避免有符号数溢出这个未定义行为 是因为不能确保 他可能回绕 也有可能是其他行为
70,021
社区成员
243,263
社区内容
加载中
试试用AI创作助手写篇文章吧