C語言中學習整數型別的取值範圍有什麼用,有什麼意義啊?

時間 2021-05-30 17:11:29

1樓:黃達

程式設計中,對於你定義的任何乙個「量」,你都必須要清楚它的範圍。比如月份是1~12,考慮閏月就是1~13,用了0就是0~12。如距離,1mm~60000mm,超過這個數我不處理。

這樣你才能決定用什麼樣的儲存形式來儲存這個量。比如1mm~60000mm的距離,儲存在32位無符號整數裡是合適的,64位當然也沒有問題。但是同樣的距離用微公尺表示的話就超出了32位無符號整數的範圍了,就需要用更大的儲存形式。

舉乙個例子

unsigned

char

counter

;for

(counter=0

;counter

<1000

;counter++)

counter在這裡被當作整數使用,它是乙個8位的。它能儲存的值範圍是0~255。這個for迴圈永遠不會滿足結束條件。

另乙個例子,2023年問題。

你可能聽說過「千年蟲」,這個和它類似。世界上數以億計的計算機都以POSIX為基礎。POSIX的時間是以2023年1月1日0時0分0秒(POSIX紀元或UNIX紀元)開始的秒數表示的。

在32位系統中使用的是32位有符號整數。32位有符號整數的取值範圍是-2147483648 ~ 2147483647。也就是說這個時間的最大值是2023年1月1日開始的***秒後,即2023年1月19日3時14分07秒。

此時間後再過一秒,這個儲存著時間的32位有符號整數將發生上益出。有符號整數上溢位在C語言標準中是沒有規定的。一種結果是,在這個數的原始形式上(無符號)再加一,導致它發生「繞回」,其作為有符號整數的值變成-2147483648,即2023年12月13日20時45分52秒。

如果系統不考慮2023年以前的時間,從而使用了32位無符號整數,那麼「繞回」發生的時間將會推遲至2023年1月1日開始的***秒,即2023年2月7日6時28分15秒後,再過一秒。

在64位系統中,「繞回」前是***年12月4日15時30分08秒。

2樓:傑瑞房

僅就取值範圍而言,不用每個型別的都記得很清楚,大體知道個範圍,用的時候不至於溢位就可以。

在很多應用場景下,需要知道不同型別所具有的位數,這個還是很有必要的。

3樓:

int型可以看做是能儲存32位位元資料的資料型別,不只是只能用來表示乙個整數,例如char佔8位也可以表示一定範圍的整數可以加減乘除

個人理解 int是4位元組的桶 long是8位元組的桶 char是1位元組桶你需要多大容量就選合適的桶小了裝不了大了浪費記憶體大概是這樣

舉個栗子密碼學有很多加密演算法,很多演算法需要對位元資料串進行位運算,如兩個128位位元資料進行異或運算此時要用4個int型(4×32)來儲存乙個128位資料,並進行運算,這時候都不會在乎這4個變數的數值大小是什麼因為沒有意義,這4個int變數就是4個裝了32位位元資料的容器

這部分你在學習計組或者遇到過處理過位元組流資料之後會有更深的理解

4樓:周子涵

這關係到計算機記憶體上的問題,計算機當中資料都是以二進位制形式儲存的,而整型變數int佔的是4個位元組,乙個位元組8位,也就是32位,其中最高位是符號位,0為正1為負,因此int的取值範圍是-2^31 ~ 2^31 - 1,換算成十進位制就是-2147483648 ~ 2147483647,想深入理解這方面問題,可以學習計算機組成原理和作業系統的相關知識。如果是計算機相關專業的學生,在大二以後就有機會學到。

5樓:佩琪哥哥c

首先宣告:僅代表我個人觀點

我覺得沒什麼用,可能是大型工程為了不過多占用記憶體,然後優化用吧,我學了還是有一段時間了,我覺得一般人接觸不到這個取值範圍的作用,但是你要了解有這個概念

c語言中整型變數的取值範圍是怎麼取的?為什麼是負的二的七次方到二的七次方減一?

調皮的李先生 我認為是這樣的 1byte等於8bit,也就是8個0或1,如 或11111111。其中第乙個數代表的意思是該數為正還是負,為1時代表負,為0時代表正。例如 00000001表示該數為1.至於為什麼是 2 7 2 7 1,說明一下2 7等於128,所以2 7 1等於127 因為11111...

C語言中強制型別轉換是如何實現的?

涇渭漳淮 強制轉換時怎麼實現的?通常是由單獨的CPU指令實現的,也就是硬體實現的。5立方之後是125,125開立方之後是幾?嚴格的數學上應該是5,但實際上計算機有精度的限制,計算結果會有誤差,計算機計算得到的結果可能是4.9999999999999435452340065849之類的,將這個值直接取...

在c語言中如何防止輸入錯誤的資料型別

站起來 這問題,一看就是初學C語言,進入了迷茫期,前方霧濛濛,看不到該往哪走。指個路吧 scanf僅供學習程式設計之用,實際工程中用不到,別在這浪費時間了。實際工程中我們都寫圖形介面,用不著scanf摻和。 方法一 利用 scanf 的返回值,來判斷是否有錯誤輸入 如果錯誤,則用 scanf s 來...