c++的int一般是4个字节,这个可以用sizeof(int)来判断
int 用补码表示,补码表示中负数比正数多一个,最大值为2147483647 最小的数为 -2147483648,那么为什么为多一个数呢,就是0的表示,只有+0才是正常的,-0被移做最小的那个int了。
符号为0为正,1为负,所以正数的最大值为01111111111,那么当这个最大的数加一有神马情况呢?就是变成了100000000000,这个数,其实按照取反加一来表示时,这个数应该是标准的-0,但是由于补码把这个改成了最小的负数,所以INT_MAX+1就是INT_MIN,所以说上帝欲使其灭亡,必先使其疯狂,记住正数最大加一后变最小的;
上面说的这个climits这个头文件中,有INT_MAX和INT_MIN
正数的范围是0~2147483647,二进制就是0000000000~01111111111111111;
负数的范围是-2147483648~-1,二进制就是1000000000~ 11111111111111111;
如图所示:
有这么个代码可以看看:
#include<iostream>
#include<climits>
using namespace std;
int main(){
int max = INT_MAX;
cout <<"the size of int is "<<sizeof(int)<<endl;
cout <<"the max of int is"<<max<<" max+1 is "<<max+1<<endl;
int min = INT_MIN;
cout <<"the min of int is "<<min<<endl;
}
运行结果是: