計算機語言的資料範圍

2021-07-10 12:29:32 字數 4008 閱讀 3842

速查表:

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 、

%usigned -- char                    8 -2^7 ~ 2^7-1 %c %c 、 %d 、

%uunsigned -- 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 %i64u 、 %i64o 、

%i64x

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

計算機語言

早期的程式設計均使用機器語言。程式設計師們將用0,1數字編成的程式 打在紙帶或卡片上,1打孔,0不打孔,再將程式通過紙帶機或卡片機輸入計算機,進行運算。這樣的機器語言由純粹的0和1構成,十分複雜,不方便閱讀和修改,也容易產生錯誤。程式設計師們很快就發現了使用機器語言帶來的麻煩,它們難於辨別和記憶,給...

計算機語言

計算機語言 計算機語言 也稱為程式語言 是用來書寫程式的語言 是人命令計算機完成工作 的工具。每一種語言都規定了一組有確定含義的符號和一組規則。根據規則構成的符號串 的總體就是語言。計算機語言分為機器語言 組合語言 高階語言和 語言。機器語言是機器指令的集合。直接採用機器語言來書寫程式是一件非常繁瑣...

計算機語言

用二進位制 0和1描述的指令 低階語言 優點 速度最快 缺點 最複雜,開發效率最低。組合語言的實質和機器語言是相同的,都是直接對硬體操作吧指令換成了英文縮寫。優點 速度最快 缺點 最複雜,開發效率最低。高階語言在開發效率上大大提高 高階語言編制的程式不能直接被計算機識別,必須經過轉換才能被執行。優點...