聊聊C語言之int類型到底占用幾個字節


     在網絡上常常看到有朋友問“int占幾個字節呀?”,其實這個問題就好比在問“車有幾個輪子呀?”,如果提問的人不說明車子的類型那么這個問題就沒有標准答案了,因為車有可能是自行車、汽車,還有可能是火車。對於int來說也是一個道理,要想知道int占用幾個字節最簡單的辦法就是實際測試一下.

     將同一段測試代碼分別使用Turbo C(一下簡稱TC)、VC6.0和GCC對這段代碼進行編譯執行,我們會發現TC告訴我們int占用2個字節,而VC和GCC告訴我們int占用4個字節。我們在同一台機器上編譯同一段代碼,而不同的編譯器輸出了不同的執行結果,那么它們仨人到底誰說的是真話呢?

  我猜它們說的都是真話,因為從來沒人規定int應該占用幾個字節,那么編譯器只好自己說了算。TC說:只要在我這編譯那么int就占2個字節。VC和GCC說:只要在我這編譯那么int就占4個字節。TC又說了:如果在我這使用int類型變量,那么它能表達的范圍是[-(2^15-1), 2^15],出了這個范圍就要當心了。VC和GCC對着TC不屑的說:int在我們這能表示的范圍可不止這么小,我們的表達范圍是[-(2^31-1), 2^31],怎么樣夠厲害的吧。

  所以我們在使用不同編譯器時候需要注意他們的數據類型差異,int如此其他數據類型也應當注意,因為並沒用人規定某種數據類型應該占據多少字節,以及他所表示的數據是有符號還是無符號,即便有人規定這些內容那么編譯器是否願意按規定來實現誰也說不准。以后我們還會介紹一些由於數據類型差異引發的程序異常。

好了先總結一下這次我們所掌握的信息:

  1. C語言具有較好的移植性,同一份代碼可以在不同的編譯器上進行編譯;

  2. 編譯沒有出錯的程序不表示執行也正確;

  3. int到底占用幾個字節誰也說不准,就像車應該有幾個輪子一個道理,需要根據實際情況而定,對int來說主要還是看編譯器本身怎么定義;


免責聲明!

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



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