計算機處理的對象是數據,而數據是以某種特定的形式存在的(例如整數、浮點數、字符等形式)。不同的數據之間往往還存在某些聯系(例如由若干個整數組成一個整數數組)。數據結構指的是數據的組織形式。例如,數組就是一種數據結構。不同的計算機語言所允許使用的數據結構是不同的。處理同一類問題,如果數據結構不同,算法也會不同。例如,對10個整數排序和對包含10個元素的整型數組排序的算法是不同的。
圖2.1 C++可以使用的數據類型
C++的數據包括常量與變量,常量與變量都具有類型。由以上這些數據類型還可以構成更復雜的數據結構。例如利用指針和結構體類型可以構成表、樹、棧等復雜的數據結構。
表2.1 數值型和字符型數據的字節數和數值范圍
C++並沒有統一規定各類數據的精度、數值范圍和在內存中所占的字節數,各C++編譯系統根據自己的情況作出安排。表2.1列出了Visual C++數值型和字符型數據的情況。
幾點說明:
1) 整型數據分為長整型(long int)、一般整型(int)和短整型(short int)。在int前面加long和short分別表示長整型和短整型。
2) 整型數據的存儲方式為按二進制數形式存儲,例如十進制整數85的二進制形式為1010101,則在內存中的存儲形式如下圖所示。
3) 在整型符號int和字符型符號char的前面,可以加修飾符signed(表示“有符號”)或unsigned(表示“無符號”)。如果指定為signed,則數值以補碼形式存放,存儲單元中的最高位(bit)用來表示數值的符號。如果指定為unsigned,則數值沒有符號,全部二進制位都用來表示數值本身。例如短整型數據占兩個字節 ,見圖2.2。
圖2.2
有符號時,能存儲的最大值為215-1,即32767,最小值為-32768。無符號時,能存儲的最大值為216-1,即65535,最小值為0。有些數據是沒有負值的,可以使用unsigned,它存儲正數的范圍比用signed時要大一倍。
4) 浮點型(又稱實型)數據分為單精度(float)、雙精度(double)和長雙精度(long double)3種,在Visual C++ 6.0中,對float提供6位有效數字,對double提供15位有效數字,並且float和double的數值范圍不同。對float分配4個字節,對double和long double分配8個字節。
5) 表中類型標識符一欄中,方括號[ ]包含的部分可以省寫,如short和short int等效,unsigned int和unsigned等效。
常量的值是不能改變的,一般從其字面形式即可判別是否為常量。常量包括兩大類,即數值型常量(即常數)和字符型常量。如12, 0, -3為整型常量,4.6, -1.23為實型常量,包含在兩個單撇號之間的字符為字符常量,如′a′, ′x′。這種從字面形式即可識別的常量稱為“字面常量”或“直接常量”。