C語言中的int到底有多少個字節?

   在面試的時候被問到這個問題,因此就鑽了牛角尖一下,在這把查到的結果記一下。面試

   一、首先,查了一下網上的資料。.net

        http://blog.csdn.net/lyl0625/article/details/7350045設計

        http://atzishi.blog.163.com/blog/static/210838180201301910533629/blog

    雖然有不少中答案,可是都說不許究竟是多少字節。 文檔

   2. 《C程序設計語言》第2.2節 數據類型及其長度get

C語言中只提供了下列幾種基本類型數據:編譯器

    char 字符型,佔用一個字節,能夠存放本地字符集中的一個字符。it

    int 整型,一般反映了所用機器中整數的最天然的長度。io

    float 單精度浮點型編譯

    double 雙精度浮點型

    此外,還能夠在這些基本的數據類型前面加上一些限定符。short和long兩個限定符用與限定整型:

    short int sh;

    long int counter;

    在上述這種類型的聲明中,關鍵字int能夠省略。一般不少人也習慣這麼作。

    short與long兩個限定符的引入能夠爲咱們提供知足實際須要的不一樣長度的整型數。int一般表明特定機器中整數的天然長度。short類型一般爲16位,long類型一般爲32位,int類型能夠爲16位或32位。各編譯器能夠更具硬件特性自主選擇合適的類型長度,但要遵循下列循環限制:short與int類型至少爲16位,而long類型至少爲32位,而且short類型不得長與int類型,而int類型不得長於long類型。

3. 《C++程序設計語言》附錄C.2標準

標準中把許多重要事項宣佈爲由實現定義。這也意味着每一個實現必須有爲該種結構提供一個特定的,定義良好的行爲方式,並必須將它寫入文檔。例如, 
    unsigned char c1 = 64; // 有良好定義:char至少有8位,總能保存64 
    unsigned char c2 = 1256; // 實現定義的:若是char只有8位就會出現截斷 
    c1的初始化具備良好的定義,由於一個char至少必須有8位。而對c2初始化的行爲就要由實現定義,由於char的確切位數由實現定義。若是char只有8位,那麼值1256就會被截斷到232(C.6.2.1)。由實現定義的大部分特徵都與用與運行程序的硬件特徵有關。 
    在寫程序的時候,一般都須要依賴與某些由實現定義的行爲。這種行爲是咱們爲了能在大範圍的系統之上有效操做所必須付出的代價。例如,若是全部的char都是8位,並且全部整數都是32位,這個語言就會簡單許多。可是,16位和32位的字符也很常見,整數也可能更大而沒法放入到32位中。例如,今天的許多計算機都有着超過32G字節的磁盤,表示磁盤地址就須要32位或者64位的整數。

4. C99的標準

ISO/IEC1989 或ISO/IEC9899:1999  裏面的5.2.4.2.1節裏面有說各類int類型的尺寸

Their implementation-defined values shall be equal or greater in magnitude (absolute value) to those shown, with the same sign.
— minimum value for an object of type int
INT_MIN -32767 // −(215 − 1)
— maximum value for an object of type int
INT_MAX +32767 // 215 − 1
— maximum value for an object of type unsigned int
UINT_MAX 65535 // 216 − 1
— minimum value for an object of type long int
LONG_MIN -2147483647 // −(231 − 1)
— maximum value for an object of type long int
LONG_MAX +2147483647 // 231 − 1
— maximum value for an object of type unsigned long int
ULONG_MAX 4294967295 // 232 − 1

5 總結

   標準只規定了:short >= 16 Bytes, long >= 32 Bytes, int >= short && int <= long。因此,面試的時候若是被問到這個問題,若是沒有專門深究過,真的很難回答出來。

相關文章
相關標籤/搜索