int 是一种整型变量,是一种常用的数据类型,存放的是整数值,再输入输出中通常用%d表示(%是引导符,表示引入或引出。d指十进制整数(也就是说还有其他进制))。

          (如果刚入门的可以看一下前面的,想看高深一点的可以直接跳到最后)

  一. 好了我们先来看看有符号int类型的取值范围。

    很多人应该知道数字超出取值范围时的现象就是不正常的输出,比如想要输出10^13,却并不是10^13,下面会看到这种现象

    我们先做个实验,找出int类型的最大值,输出 1->10000,看有无不正常输出。

实验代码:

#include <stdio.h>
int main()
{
    int i;
    for(i=1;i<=10000;i++)
        printf("%d\n",i);
    return 0;
}

Android int 取两者较小值 int的取值_数据

 

我们可以看见,即使数据中最大的10000都能正常输出,那么其他数字也是毋庸置疑的。

我们把数据调大,输出10000->100000000,由于这个输出量太大,我就倒过来输出了。代码就不再说了,直接看结果:

Android int 取两者较小值 int的取值_取值范围_02

还是可以!

接着来,输出100000000->1000000000000,由于数据太大我要缩小一些,10^8可以,那就试一下10^9。

Android int 取两者较小值 int的取值_数据_03

可以!再试一下10^10:

Android int 取两者较小值 int的取值_补码_04

输出不正常了!

我们现在可以确定int类型的最大值再10^9->10^10之间,

我们所要找的值就是一个10位数,我们再看最高位在几和几之间:

Android int 取两者较小值 int的取值_数据_05

 这是1000000000到9000000000的结果。

可以看出所要找的数应该在2*10^9到3*10^9之间。

以此类推(从高位往低位推就行了,大家应该都会,可以自己试试)

我就直接把结果弄出来了:

Android int 取两者较小值 int的取值_数据_06

 

Android int 取两者较小值 int的取值_数据_07

Android int 取两者较小值 int的取值_数据_08

Android int 取两者较小值 int的取值_Android int 取两者较小值_09

Android int 取两者较小值 int的取值_Android int 取两者较小值_10

Android int 取两者较小值 int的取值_补码_11

Android int 取两者较小值 int的取值_取值范围_12

Android int 取两者较小值 int的取值_Android int 取两者较小值_13

最大值就算出来了,就是2147483647。

那最小值呢?

既然最大值是2147483647,那么我就试试-2147483647。

Android int 取两者较小值 int的取值_Android int 取两者较小值_14

正常,再试试-2147483648.

Android int 取两者较小值 int的取值_取值范围_15

正常,再试试-2147483649.

Android int 取两者较小值 int的取值_数据_16

最终,我们终于求出了int类型的取值范围就是-2147483648到2147483647.

 为什么呢?这个其实看一下航航大魔王的(必看,写得特别好)https://www.jianshu.com/p/ffc97c4d2306就知道了,要认真看(只用看1.1节),我要是说出来就没意思了。

我之前说那么多都只是给一些刚接触的人看的,如果觉得不用看我的,就看这两位的博客吧。

PS:其实-2147483648相当于模https://baike.baidu.com/item/%E8%A1%A5%E7%A0%81/6854613?fr=aladdin看一下百度百科就行了,说的也很好。

再说一句最重要的话,那就是所有整数型变量都用补码表示。