int类型的数据长度

1.在32的机器下,int的范围是 - 2 ^ 31 ~2 ^ 31 - 1;  也就是:[-2147483648, 2147483647]; 

 在16的机器下,int的范围为 -2 ^ 15 ~ 2 ^ 15-1;也就是 :[-32768,32767];

整型变量int的范围与计算机的字长有关,int 的长度是一个计算机字长。

2.int n =-2147483648 时,会发生错误 1:error C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型 

  所以该值不能写为 -2147483648,因为表达式处理分两个步骤:1. 计算数字 2147483648。 因 2147483648 大于最大整数值 2147483647,所以其类型不是 int,而是 unsigned int。2. 将一元负应用于该值,得到无符号结果,该结果碰巧是 2147483648。而这种隐含转换的无符号类型的结果可能导致意外行为,所以编译器会提示waring甚至在VS2012中直接提示error。

因分析:http://blog.csdn.net/mrknight/article/details/9851631

3.原码, 反码, 补码 详解

https://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html

4.INT_MIN和INT_MAX看最小值和最大值

    cout << "int 最小值: " << INT_MIN << endl;
    cout << "int 最大值: " << INT_MAX << endl;
    int a ,b,c,d;
    a = 2147483647;  //比如说在32的机器下,int的范围是 - 2 ^ 31 ~2 ^ 31 - 1;     也就是:[-2147483648, 2147483647]; 16的机器下范围为-2^15~2^15-1
    b = a + 1;
    cout << a << "   " << b << endl;
   
    c = -2147483648;  //虽然明明 int 最小值是 - 2147483648,但我们就是无法用int n = -2147483648; 表示。
    // d = c - 1;
    //cout << c << "   " << d << endl;


你可能感兴趣的:(C++)