基礎之資料型別

2021-05-22 17:28:31 字數 3335 閱讀 8740

基本型別包括位元組型(char)、整型(int)和浮點型(float/double)。

定義基本型別變數時,可以使用符號屬性signed、unsigned(對於char、int),和長度屬性short、long(對於int、double)對變數的取值區間和精度進行說明。

下面列舉了dev-c++下基本型別所佔位數和取值範圍:

符號屬性 長度屬性 基本型 所佔位數 取值範圍 輸入符舉例 輸出符舉例

-- -- 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 %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也是三種互不相同的型別。

可以使用c++的函式過載特性進行驗證,如:

void func(char ch) {}

void func(signed char ch) {}

void func(unsigned char ch) {}

是三個不同的函式。

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

JS資料型別之基礎資料型別

基本資料型別是按值訪問的,也就是說我們可以操作儲存在變數中的實際的值 基本資料型別的值是不可改變的,任何方法都無法改變乙個基本資料型別的值。let name qin ling ling name lisi console.log name 輸出 lisi上面的例子看來name的值好像變了,這裡的基礎...

資料型別基礎資料型別

資料型別 基礎型別 除八大基礎型別其他的都是引用型資料型別 引用資料型別 基礎資料型別 整型 byte 佔乙個位元組,範圍 128 127 short 佔兩個位元組,範圍 32768 32767 int 最常用 佔四個位元組,範圍 2147483648 2147483647 long 佔八個位元組 ...

Python基礎之資料型別

1.程式輸出 print print hello world hello world 2.程式輸入 input name input shuaishuai print hello name hello shuaishuai 3.注釋 這是乙個注釋 這是 乙個多行注釋 4,運算子 加,減,乘除,地板除...