int類型究竟占幾個字節


   我最近也在看深入理解計算機系統這本書,上面提到了在32位機器和64機器中int類型都占用4個字節。后來,別人查了The C Programming language這本書,里面有一句話是這樣的:

Each compiler is free to choose appropriate sizes for its own hardware, subject only to the restriction that shorts and ints are at least 16bits, longs are at least 32bits, and short is no longer than int, which is no longer than long

.意思大致是編譯器可以根據自身硬件來選擇合適的大小,但是需要滿足約束:short和int型至少為16位,long型至少為32位,並且short型長度不能超過int型,而int型不能超過long型。這即是說各個類型的變量長度是由編譯器來決定的,而當前主流的編譯器中一般是32位機器和64位機器中int型都是4個字節(例如,GCC)。下面列舉在GCC編譯器下32位機器和64位機器各個類型變量所占字節數:

     C類型            32               64
    char             1                1
    short int             2                2
    int             4                4
    long int             4                8
    long long int             8                8
    char*             4                8
    float             4                4
    double             8                8

 

需要說明一下的是指針類型存儲的是所指向變量的地址,所以指針是全字長的,所以32位機器只需要32bit,而64位機器需要 64bit 。

經過詢問,網上查找以及測試,發現 數據類型占內存的位數實際上與操作系統的位數和編譯器(不同編譯器支持的位數可能有所不同)都有關 ,具體某種數據類型占字節數得編譯器根據操作系統位數兩者之間進行協調好后分配內存大小。具體在使用的時候如想知道具體占內存的位數通過sizeof(int)可以得到准確的答案。

原文  http://blog.csdn.net/user_longling/article/details/23663991


免責聲明!

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



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