1. 程式人生 > >C語言各種資料型別取值範圍

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

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

速查表:

char -128 ~ +127 (1 Byte)
short -32768 ~ + 32767 (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的最大值:18446744073709551615

__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 型別的長度、精度及表示範圍與所使用的編譯器、作業系統等有關。

相關推薦

C語言各種資料型別範圍

轉自:http://blog.csdn.net/mafuli007/article/details/7325510 速查表: char -128 ~ +127 (1 Byte) short -32768 ~ + 32767 (2 Bytes) unsigned sho

C語言各種資料型別範圍

速查表: char -128 ~ +127 (1 Byte) short -32767 ~ + 32768 (2 Bytes)-2的15次方-1 ~ 2的15次方 unsigned short 0 ~ 65536 (2 Bytes)0 ~ 2的16次方 int (l

C語言——原碼、反碼、補碼、資料型別範圍

記得剛學C語言的時候,對應資料型別的取值範圍經常會有這樣的疑問:比如8位的二進位制補碼範圍為什麼是-128~127呀?為 什麼會差一個數呀?(以8位為例) 為了解釋這個問題,我們先來了解下幾個概念(

SQL 用於各種資料庫的資料型別(轉載) sqlserver 資料型別 範圍 長度

SQL 用於各種資料庫的資料型別 來源 http://www.runoob.com/sql/sql-datatypes.html    面向資料庫程式設計中,資料型別的取值範圍、長度,可能是需要經常檢視的資料。 Microsoft Access、MySQL 和 SQL S

C++各資料型別範圍(備忘)--32位作業系統

各資料型別取值範圍 bool型為布林型,佔1個位元組,取值0或1。 BOOL型為int型,一般認為佔4個位元組,取值TRUE/FALSE/ERROR。 sbyte型為有符號8位整數,佔1個位元組,取值範圍在128~127之間。 bytet型為無符號16位

Java基本資料型別範圍,為什麼String 不是基本資料型別,char的範圍為什麼沒有負數

一、在JAVA中一共有八種基本資料型別,他們分別是 byte、short、int、long、float、double、char、boolean 整型 其中byte、short、int、long都是表示整數的,只不過他們的取值範圍不一樣 byte的取

Java連載10-資料型別範圍&轉義字元

一、資料型別取值範圍 二、八種資料型別在成員變數中的預設值 (1)成員變數,沒有賦值,編譯不會報錯,系統會自動給賦值 byte\int\short\long預設值為0;float\double預設值為0.0;boolean預設值為false;char預設值為\u0000 總結:一切向零看齊 (2

C語言資料型別範圍

資料型別 序號 型別與描述 1 基本型別:它們是算術型別,包括兩種型別:整數型別和浮點型別。 2 列舉型別:它們也是算術型別,被用來定義在程式中只能賦予其一定的離散整數值的變數。 3 void 型別:型別說明

C語言中,int型資料範圍

在C語言中,int型資料所佔的位元組和具體的編譯器有關,32位編譯器int佔4個位元組(VC,C-free),16位編譯器int佔2個位元組(詳見“int型資料所佔位元組和什麼有關”)。 以兩個位元組為例: 在C中,int型資料是一個有符號的整型資料,其最高位為符號位(0表

C語言資料型別

1. 下面的例項演示了獲取 int 型別的大小: 程式碼: #include <stdio.h> #include <limits.h> int main() { printf("int 儲存大小 : %lu \n", sizeof(int)); ret

第二章:C語言資料型別

一、識別符號的命名規範 程式設計時給變數或者函式起的名字就是識別符號,就好比我們人都有姓名,姓名就是這個人的識別符號。C語言的識別符號是不可以隨便起名字的,必須遵守一定的規則。 C 語言規定,識別符號可以是字母(A~Z,a~z)、數字(0~9)、下劃線_組成的字串,並且第

C/C++中各種 資料型別、結構體、類 佔用位元組數分析與總結

一、基本資料型別在不同編譯器下佔用位元組數比較與總結,測試過程不詳述了,直接看下錶結論! 下表中右側總結部分是依據佔用位元組數進行著色,同一種顏色型別的資料成員佔用位元組數要麼一致,要麼具有同樣的性質,這樣比較容易理解的記憶。 佔用位元組數

C#與C++和C語言之間資料型別的對應

一、C#與C++資料型別的對應表  

c語言常用資料型別所佔用的位元組數

一、資料型別所佔用位元組數與機器字長與編譯器有關,遵循的幾條規律如下: sizeof(short int )<=sizeof(int) sizeof(int)<=sizeof(long int) short int 至少應為16位(2個位元組) long in 至少應為32位(

char型別範圍分析

眾所周知,char型別分為unsigned char(無符號型別)和signed char(有符號型別)。 我先將這些範圍用程式碼打印出來: printf("%d\n",SCHAR_MIN); //signed char最小值 printf("%d\n",SCHAR_MAX); /

5. C語言基本資料型別及構造資料型別,浮點型儲存規則及記憶體模型

  其實學習C語言的時候有一件很頭疼的事就是各種各樣的資料型別,不同的場合不同的用途不同的資料要使用不同的資料型別,那又為什麼要分出這麼多種型別呢,因為型別決定了開闢空間的大小,開闢空間的大小又決定了儲存的範圍。今天,就資料型別這個問題我們來掰扯掰扯。   C

C語言資料型別的本質

  資料型別可以理解為固定記憶體大小的別名。比如int型別,就是表示佔用4位元組的記憶體。 1 資料型別的大小   用sizeof操作符獲得資料型別的大小。    比如 int a[5];   sizeof(a)就可以得出int型陣列a的大小是20位元組

C語言基本資料型別short、int、long、char、float、double

1.概述  C 語言包含的資料型別如下圖所示2.各種資料型別介紹2.1整型  整形包括短整型、整形和長整形。2.1.1短整形  short a=1;2.1.2整形  一般佔4個位元組(32位),最高位代表符號,0表示正數,1表示負數,取值範圍是-2147483648~2147

c語言基本資料型別所佔的位數

1.C++的short、int、long和long long型別通過使用不同數目的位來儲存值,最多能夠表示4中不同的整數寬度。C++提供了一種靈活的標準,它確保了最小長度(從C語言借鑑而來),如下: 1. short 至少16位 2. int 至少與 short 一樣長 3

C語言資料型別總結

1.c語言的資料型別的分類: 分為四大類:基本資料型別、指標型別、空型別、構造型別。 基本資料型別:整型(int)、單精度浮點型(float)、雙精度浮點型(double)、字元型(char); 注: