C 基本內建型別

2021-07-10 13:00:02 字數 2295 閱讀 1147

算術型別

算術型別分為兩類:整型(integral type,包括字元和布林型別在內)和浮點型。

算術型別的尺寸(也就是該型別資料所佔的位元數)在不同機器上有所差別。下表列出了c++標準規定的尺寸的最小值,同時允許編譯器賦予這些型別更大的尺寸。某一型別所佔的位元數不同,它所能表示的資料範圍也不一樣。

c++提供了幾種字元型別,其中多數支援國際化。基本的字元型別是char,乙個char的空間應確保可以存放機器基本字符集中任意字元對應的數字值。也就是說,乙個char的大小和乙個機器位元組一樣。

其他字元型別用於擴充套件字符集,如wchar_t、char16_t、char32_t。wchar_t型別用於確保可以存放機器最大擴充套件字符集中的任意乙個字元,型別char16_t和char32_t則為unicode字符集服務(unicode是用於表示所有自然語言中字元的標準)。

除字元和布林型別之外,其他整型用於表示(可能)不同尺寸的整數。c++語言規定乙個int至少和乙個short一樣大,乙個long至少和乙個int一樣大,乙個long long至少和乙個long一樣大。其中,資料型別long long是在c++11中新定義的。

內建型別機器**的實現

計算機以位元序列儲存資料,每個位元非0即1,例如:

00011011011100010110010000111011

...

大多數計算機以2的整數次冪個位元作為塊來處理記憶體,可定址的最小記憶體塊稱為"位元組(byte)",儲存的基本單元稱為"字(word)",它通常由幾個位元組組成。在c++語言中,乙個位元組要至少能容納機器基本字符集中的字元。大多數機器的位元組由8位元構成,字則由32或64位元構成,也就是4或8位元組。

大多數計算機將記憶體中的每個位元組與乙個數字(被稱為"位址(address)")關聯起來,在乙個位元組為8位元、字為32位元的機器上,我們可能看到乙個字的記憶體區域如下所示:

73642400

1110

1173642500

0110

1173642601

1100

0173642701

1001

00其中,左側是位元組的位址,右側是位元組中8位元的具體內容。

我們能夠使用某個位址來表示從這個位址開始的大小不同的位元串,例如,我們可能會說位址736424的那個字或者位址736427的那個位元組。為了賦予記憶體中某個位址明確的含義,必須首先知道儲存在該位址的資料的型別。型別決定了資料所佔的位元數以及該如何解釋這些位元的內容。

如果位置736424處的物件型別是float,並且該機器中float以32位元儲存,那麼我們就能知道這個物件的內容佔滿了整個字。這個float數的實際值依賴於該機器是如何儲存浮點數的。或者如果位置736424處的物件型別是unsigned char,並且該機器使用iso-latin-1字符集,則該位置處的位元組表示乙個分號。

浮點型可表示單精度、雙精度和擴充套件精度值。c++標準指定了乙個浮點數有效位數的最小值,然而大多數編譯器都實現了更高的精度。通常,float以1個字(32位元)來表示,double以2個字(64位元)來表示,long double以3或4個字(96或128位元)來表示。一般來說,型別float和double分別有7和16個有效位;型別long double則常常被用於有特殊浮點需求的硬體,它的具體實現不同,精度也各不相同。

帶符號型別和無符號型別

除去布林型和擴充套件的字元型之外,其他整型可以劃分為帶符號的(signed)和無符號的(unsigned)兩種。帶符號型別可以表示正數、負數或0,無符號型別則僅能表示大於等於0的值。

型別int、short、long和long long都是帶符號的,通過在這些型別名前新增unsigned就可以得到無符號型別,例如unsigned long。型別unsigned int可以縮寫為unsigned。

與其他整型不同,字元型被分為了三種:char、signed char和unsigned char。特別需要注意的是:型別char和型別signed char並不一樣。儘管字元型有三種,但是字元的表現形式卻只有兩種:帶符號的和無符號的。型別char實際上會表現為上述兩種形式中的一種,具體是哪種由編譯器決定。

無符號型別中所有位元都用來儲存值,例如,8位元的unsigned char可以表示0至255區間內的值。

c++標準並沒有規定帶符號型別應如何表示,但是約定了在表示範圍內正值和負值的量應該平衡。因此,8位元的signed char理論上應該可以表示-127至127區間內的值,大多數現代計算機將實際的表示範圍定為-128至127。

參考:c++primer 第五版

C 基本內建型別詳解

c 內建型別 c 定義了一套包括算術型別和空型別在內的基本資料型別。算數型別包括 字元型,整型,bool型,和浮點型。而至於空型別並沒有確定的具體的值,只是用於某些特殊的場合。比如當函式執行完的時不反悔任何數值,此時就需要乙個空型別老作為返回值 一 算數型別的劃分以及各型別所能表示的最大值或者表示範...

基本內建型別

c 的基本內建型別包含空型別和算術型別。算術型別包含 字元型別 整型數 浮點值 布林值。算術型別分為兩大類 整型,包含字元和布林型別在內 浮點型。除了布林型別和擴充套件的字元型別之外,其它整型可以劃分為帶符號和無符號的。字元型分為三種 char signed char unsigned char。但...

C 基本內建資料型別

c 資料型別 基本資料型別 指標型別和構造型別 基本資料型別 整型 長整型 短整型等 字元型 實數型別 單精度 雙精度等 布林型 空值型 void 構造型別 陣列 結構 列舉 指標型別 屬於復合型別,需要結合所指向物件的型別來定義 預備知識 計算機處理器的通用暫存器通常都是8 bits,1 位元組 ...