天天看點

《C++程式設計教程(第3版)》——第2章,第2節C++的基本資料類型

本節書摘來自華章出版社《c++程式設計教程(第3版)》一書中的第2章,第2.2節c++的基本資料類型,作者張志航,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視

2.2 c++的基本資料類型

程式中經常需要處理資料,資料需要在計算機内部存儲。描述一個資料需要兩方面的資訊:一是資料占用的存儲空間的大小(即該資料占用的位元組數);二是該資料允許執行的操作或運算。為資料賦予類型就可以區分這兩方面的資訊。c++的資料類型分為兩類:一類是基本資料類型;另一類是導出資料類型(也稱為構造資料類型)。基本資料類型包括字元型、整型、實型、雙精度實型等。導出資料類型是由基本資料類型構造出來的資料類型,包括數組、指針、結構體和類等。表2-1中列出了c++基本資料類型及各類型資料的取值範圍。

表2-1 c++中的基本資料類型

《C++程式設計教程(第3版)》——第2章,第2節C++的基本資料類型

字元型量用來表示一個字元,在其1位元組的存儲空間中存放的是該字元的ascii碼值;也可以将字元型量用來表示一個8位二進制碼的整型量。整型量用來存放整型資料,其占用的位元組數随c++版本的不同而不同,可以占用2位元組或4位元組,在vs 2013中占用4位元組。實型量用來存放實型資料,兩種類型的實型量因占用的位元組數不同,其表示的資料範圍也不同。float型有時也稱為單精度實型。邏輯型也稱為布爾型,資料的取值隻能是邏輯常量true(真)和false(假)。邏輯型量所占用的位元組數在不同的編譯系統中可能不同,在vs 2013中占用1位元組。空類型就是無值型,一般用于聲明函數沒有傳回值或函數沒有參數,請參閱函數相關章節中對void的使用。

需要注意的是,表2-1中的資料類型可以劃分成兩個大類:“整型”和“浮點型”。“整型”包括char、int和bool類型,以及在第8章中介紹的枚舉類型enum。計算機内部采用原碼或補碼形式表示“整型”資料。“浮點型”包括float和double類型,在計算機内部采用浮點形式表示,是以有時也把實型量稱為浮點型量,把實型資料稱為浮點型資料。注意float型量的有效數字位數是7位,double型量的有效數字位數是15~16位。有效數字的位數指十進制資料的位數,例如,float型實數123.456 789,計算機内部隻能精确地表示到數字7這一位,後面的數字8和9無法精确表示。

在類型辨別符char和int之前加上修飾詞後,可以得到其他類型的整型量。這些修飾詞有signed(有符号的)、unsigned(無符号的)、long(長的)、short(短的),組合後的資料類型如表2-2所示。

表2-2 c++中的全部整型資料類型

《C++程式設計教程(第3版)》——第2章,第2節C++的基本資料類型
《C++程式設計教程(第3版)》——第2章,第2節C++的基本資料類型

表2-2中第1列的資料類型辨別符中方括号中的内容可省略,省略後得到第2列中類型辨別符的最簡形式。

類型辨別符可用于定義變量,如“int a=5,b=-5;”定義了兩個整型變量a和b,它們的初值分别是5和-5。int型量在記憶體中以補碼形式存儲,占有32個二進制位,上述a和b兩個量在記憶體中存儲形式為:

a:0000 0000 0000 0000 0000 0000 0000 0101

b:1111 1111 1111 1111 1111 1111 1111 1011

補碼的最高位是符号位。5是正數,其補碼形式與原碼相同。-5的補碼是其原碼取反加1。

int型量與unsigned int型量的差別如圖2-1所示。int型量是32位的,采用補碼形式表示,有符号位;而unsigned int型量也是32位的,但采用原碼形式表示,沒有符号位。

圖2-1 int型量與unsigned int型量的差別

《C++程式設計教程(第3版)》——第2章,第2節C++的基本資料類型

記憶體中有編碼 1111 1111 1111 1111 1111 1111 1111 1011,如果把它賦給一個int整型量,它所代表的值為-5。如果把它賦給一個unsigned int整型量,它所代表的值為4 294 967 291(等于232-1-4)。

繼續閱讀