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; }
我們可以看見,即使數據中最大的10000都能正常輸出,那么其他數字也是毋庸置疑的。
我們把數據調大,輸出10000->100000000,由於這個輸出量太大,我就倒過來輸出了。代碼就不再說了,直接看結果:
還是可以!
接着來,輸出100000000->1000000000000,由於數據太大我要縮小一些,10^8可以,那就試一下10^9。
可以!再試一下10^10:
輸出不正常了!
我們現在可以確定int類型的最大值再10^9->10^10之間,
我們所要找的值就是一個10位數,我們再看最高位在幾和幾之間:
這是1000000000到9000000000的結果。
可以看出所要找的數應該在2*10^9到3*10^9之間。
以此類推(從高位往低位推就行了,大家應該都會,可以自己試試)
我就直接把結果弄出來了:
最大值就算出來了,就是2147483647。
那最小值呢?
既然最大值是2147483647,那么我就試試-2147483647。
正常,再試試-2147483648.
正常,再試試-2147483649.
最終,我們終於求出了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看一下百度百科就行了,說的也很好。
再說一句最重要的話,那就是所有整數型變量都用補碼表示。