int类型的值最大取pow(2,31)-1,在内存中表示为:0111...1 一共32位,第一位的 0 是符号位
如果在此的基础上加上1,结果为:111...1 一共 32 位都是为 1 ,第一位符号位为 1 ,也就表示这个数是一个负数,因为在计算机中,二进制数都是采用补码的方式存储的,
如果在最大值上加上2,结果为 111...10,最后一位为 0 ,也就会比上一种情况大 1(因为是负数,越小的数,值越大)
看看代码:
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int n=pow(2,31);
int t=n+2;
printf("溢出1:%d\n",n);
printf("溢出101:%d\n",t);
return 0;
}
好好学习,天天向上!
我要考研!