C語言各種資料類型取值範圍

來源:互聯網
上載者:User

標籤:

速查表:

char -128 ~ +127 (1 Byte)
short -32767 ~ + 32768 (2 Bytes)
unsigned short 0 ~ 65536 (2 Bytes)
int -2147483648 ~ +2147483647 (4 Bytes)
unsigned int 0 ~ 4294967295 (4 Bytes)
long == int
long long -9223372036854775808 ~ +9223372036854775807 (8 Bytes)
double 1.7 * 10^308 (8 Bytes)

unsigned int 0~4294967295 
long long的最大值:9223372036854775807
long long的最小值:-9223372036854775808
unsigned long long的最大值:1844674407370955161

__int64的最大值:9223372036854775807
__int64的最小值:-9223372036854775808
unsigned __int64的最大值:18446744073709551615

 

符號屬性 長度屬性 基本型 所佔位元 取值範圍 輸入符舉例 輸出符舉例 
    -- -- char                            8 -2^7 ~ 2^7-1 %c %c 、 %d 、 %u
    signed -- char                    8 -2^7 ~ 2^7-1 %c %c 、 %d 、 %u
    unsigned -- char                8 0 ~ 2^8-1 %c %c 、 %d 、 %u
    [signed] short [int]            16 -2^15 ~ 2^15-1 %hd
    unsigned short [int]           16 0 ~ 2^16-1 %hu 、 %ho 、 %hx
    [signed] -- int                    32 -2^31 ~ 2^31-1 %d
    unsigned -- [int]                 32 0 ~ 2^32-1 %u 、 %o 、 %x
    [signed] long [int]              32 -2^31 ~ 2^31-1 %ld
    unsigned long [int]             32 0 ~ 2^32-1 %lu 、 %lo 、 %lx
    [signed] long long [int]       64 -2^63 ~ 2^63-1 %I64d
    unsigned long long [int]      64 0 ~ 2^64-1 %lld,%llx
    -- -- float                            32 +/- 3.40282e+038 %f 、 %e 、 %g
    -- -- double                        64 +/- 1.79769e+308 %lf 、 %le 、 %lg %f 、 %e 、 %g
    -- long double                    96 +/- 1.79769e+308 %Lf 、 %Le 、 %Lg

幾點說明: 

1. 注意 ! 表中的每一行,代表一種基本類型。 “[]” 代表可省略。 
    例如: char 、 signed char 、 unsigned char 是三種互不相同的類型; 
    int 、 short 、 long 也是三種互不相同的類型。 

2. char/signed char/unsigned char 型資料長度為 1 位元組;
    char 為有符號型,但與 signed char 是不同的類型。 
    注意 ! 並不是所有編譯器都這樣處理, char 型資料長度不一定為 1 位元組, char 也不一定為有符號型。 

3. 將 char/signed char 轉換為 int 時,會對最高符號位 1 進行擴充,從而造成運算問題。 
    所以 , 如果要處理的資料中存在位元組值大於 127 的情況,使用 unsigned char 較為妥當。 
    程式中若涉及位元運算,也應該使用 unsigned 型變數。 

4. char/signed char/unsigned char 輸出時,使用格式符 %c (按字元方式);  或使用 %d 、 %u 、 %x/%X 、 %o ,按整數方式輸出; 輸入時,應使用 %c ,若使用整數方式, Dev-C++ 會給出警告,不建議這樣使用。 

5. int 的長度,是 16 位還是 32 位,與編譯器字長有關。 
    16 位編譯器(如 TC 使用的編譯器)下, int 為 16 位; 32 位編譯器(如 VC 使用的編譯器 cl.exe )下, int 為 32位。 

6. 整型資料可以使用 %d (有符號 10 進位)、 %o (無符號 8 進位)或 %x/%X (無符號 16 進位)方式輸入輸出。 而格式符 %u ,表示 unsigned ,即無符號 10 進位方式。 

7. 整型首碼 h 表示 short , l 表示 long 。 
    輸入輸出 short/unsigned short 時,不建議直接使用 int 的格式符 %d/%u 等,要加首碼 h 。這個習慣性錯誤,來源於 TC 。 TC 下, int 的長度和預設符號屬性,都與 short 一致,於是就把這兩種類型當成是相同的,都用 int 方式進行輸入輸出。 

8. 關於 long long 類型的輸入輸出: 
    "%lld" 和 "%llu" 是 linux 下 gcc/g++ 用於 long long int 類型 (64 bits) 輸入輸出的格式符。 
    而 "%I64d" 和 "%I64u" 則是 Microsoft VC++ 庫裡用於輸入輸出 __int64 類型的格式說明。 

    Dev-C++ 使用的編譯器是 Mingw32 , Mingw32 是 x86-win32 gcc 子項目之一,編譯器核心還是 linux 下的 gcc 。
    進行函數參數類型檢查的是在編譯階段, gcc 編譯器對格式字串進行檢查,顯然它不認得 "%I64d" , 
    所以將給出警告 “unknown conversion type character `I‘ in format” 。對於 "%lld" 和 "%llu" , gcc 理所當然地接受了。 
    
    Mingw32 在編譯期間使用 gcc 的規則檢查文法,在串連和運行時使用的卻是 Microsoft 庫。 
    這個庫裡的 printf 和 scanf 函數當然不認識 linux gcc 下 "%lld" 和 "%llu" ,但對 "%I64d" 和 "%I64u" ,它則是 樂意接受,並能正常工作的。 

9. 浮點型資料輸入時可使用 %f 、 %e/%E 或 %g/%G , scanf 會根據輸入資料形式,自動處理。 
    輸出時可使用 %f (普通方式)、 %e/%E (指數方式)或 %g/%G (自動選擇)。 

10. 浮點參數壓棧的規則: float(4 位元組 ) 類型擴充成 double(8 位元組 ) 入棧。 
    所以在輸入時,需要區分 float(%f) 與 double(%lf) ,而在輸出時,用 %f 即可。 
    printf 函數將按照 double 型的規則對壓入堆棧的 float( 已擴充成 double) 和 double 型資料進行輸出。 
    如果在輸出時指定 %lf 格式符, gcc/mingw32 編譯器將給出一個警告。 

11. Dev-C++(gcc/mingw32) 可以選擇 float 的長度,是否與 double 一致。 

12. 首碼 L 表示 long ( double )。 
    雖然 long double 比 double 長 4 個位元組,但是表示的數值範圍卻是一樣的。 
    long double 類型的長度、精度及表示範圍與所使用的編譯器、作業系統等有關。

 

轉自:http://blog.csdn.net/mafuli007/article/details/7325510

C語言各種資料類型取值範圍

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.