資料型別範圍

weixin_34321977發表於2018-03-29

常識

      型別                位元組                         範圍                   
      byte             1位元組,8位              256(-128 到127)           
      bool             1位元組,8位              256(-128 到127)           
      char             1位元組,8位              256(-128 到127)           
      short            2位元組,16位          65535( –32,768 到 32,767)        
      int              4位元組,32位          4294967296( –2,147,483,648 到 2,147,483,647) 
      unsigned int     4位元組,32位          4294967296(0 到 4,294,967,295)      
      long             4位元組,32位          4294967296( –2,147,483,648 到 2,147,483,647)                                                                                          
      long long        8位元組,64位      18446744073709551616( –9,223,372,036,854,775,808 到 9,223,372,036,854,775,807)
      float            4位元組,32位          3.4E +/- 38(7 位數)            
      double           8位元組,64位          1.7E +/- 308(15 位數)           

這裡需要注意的是long和int的區別,看上去在範圍上兩者好像一樣。但是這是取決於你所在的平臺的。但無論什麼憑條都必須遵守

[ int 至少 16 位,long int 至少 32 位,並且 sizeof(int) <= sizeof(long)」的規則。

這就類似,你覺得「愛人」和「妻子」不可能有區別,但是在日語裡,這兩個確實有天壤之別。我們這裡都是按照資料型別在一些情況下最小範圍進行羅列。

所以我們再來個表:

    型別      16位系統/位元組    32位系統/位元組    64位系統/位元組
    char          1               1               1    
    char*         2               4               8    
    short         2               2               2    
    int           2               4               4    
    long          4               4               8
    long long     8               8               8    

我們多羅列了個unsigned int,是為了說明unsigned的情況。所有資料型別除bool,unsigned時範圍變化都一致。所能表示的最大數是原來的2倍,所能表示的範圍沒變。

相關文章