int類型的取值范圍探究


  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看一下百度百科就行了,說的也很好。

再說一句最重要的話,那就是所有整數型變量都用補碼表示。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM