第3章 處理資料

2021-09-27 04:16:05 字數 3206 閱讀 9283

基本型別 :整數、浮點數 (提供多種變體)

typedef short int wchar_t; //wchar_t 實際上的空間是和 short int 一樣

typedef 為乙個已有的型別取乙個新的名字

typedef int feet; // feet是int的了另乙個名稱

下面的宣告是完全合法的,它建立了乙個整型變數 distance

feet distance;

wchar_t可以表示擴充套件字符集,是一種整數型別。cin和cout將輸入和輸出看作char流,不適於處理wchar_t型別。iostream標頭檔案的最新版本提供了作用相似的工具,wcin和wcout,用於處理wchar_t流。

各種變數型別在記憶體中儲存值時需要占用的記憶體,不同系統會有所差異

術語寬度用於描述儲存整數時使用的記憶體量,c++的基本整型(按寬度遞增順序排列)分別是char、short int、int、long int和c++新增的long long,其中每種型別都有符號版本和無符號版本。

可對型別名或變數名使用sizeof運算子

cout << "int is" << sizeof  (int) << "bytes. \n";   // 對型別名使用sizeof,應將名稱放到括號內

cout << "short is" << sizeof n_short << "bytes.\n"; //但對變數名,括號可選

宣告語句指出儲存位置並提供位置標籤

int carrots
這條語句提供兩個資訊:程式需要開闢空間儲存乙個整數;程式將使用carrots來標識儲存在該記憶體單元中的值。

變數定義和宣告

作用域是程式的乙個區域,一般來說有三個地方可以定義變數:

在函式或乙個**塊內部宣告的變數,稱為區域性變數。

在函式引數的定義中宣告的變數,稱為形式引數。

在所有函式外部宣告的變數,稱為全域性變數。

程式中,區域性變數和全域性變數的名稱可以相同,但是在函式內,區域性變數的值會覆蓋全域性變數的值。當區域性變數被定義時,系統不會對其初始化,必須自行對其初始化。定義全域性變數時,系統會自動初始化為下列值。

int 0; char 『\0』; float 0; double 0; pointer null

算數運算子

+,-,*,/,%,++,–

/:若兩個運算元都是整數,結果的小數部分將被丟棄,若其中有乙個或兩個運算元是浮點數,小數部分將保留,結果是浮點數。

a++與++a:字首形式與字尾形式之間有一點不同。如果使用字首形式,則會在表示式計算之前完成自增或自減,如果使用字尾形式,則會在表示式計算之後完成自增或自減

關係運算子

==,!=,>,=,<=

邏輯運算子

&&,||,!

賦值運算子

位運算子

其他運算子

基於基本整型和浮點型建立,影響最深遠的復合型別是類,更普通的復合型別是:陣列,儲存多個同型別的值,一種特殊的陣列可以儲存字串;指標:將資料儲存位置告訴計算機;結構:儲存多個不同型別的值。

列舉型別(enumeration)是c++中的一種派生資料型別,它是由使用者定義的若干列舉常量的集合,"列舉"是指將變數的值一一枚舉出來,變數的值只能在列舉出來的值的範圍內。

建立列舉,需要使用關鍵字 enum。列舉型別的一般形式為

enum 列舉名 列舉變數;
如果列舉沒有初始化, 即省掉"=整型常數"時, 則從第乙個識別符號開始。

enum color  c;

c = blue;

預設情況下,第乙個名稱的值為 0,第二個名稱的值為 1,第三個名稱的值為 2

enum color ; blue 的值為 6,因為預設情況下,每個名稱都會比它前面乙個名稱大 1,但 red 的值依然為 0

enum zero和null都是0

c++的enum提供了建立符號常量的方式,這種方式可以代替const。

enum spectrum ;
這條語句完成兩項工作:讓spectrum成為新型別的名稱;將red等作為符號常量,它們對應整數值0-7.這些常量叫做列舉量。可以用列舉名宣告這種型別的變數,如spectrum band。band=blue 合法,band =2000不合法。spectrum變數受限,只有8個可能的值。對於列舉,只定義了賦值運算子,沒有為列舉定義算數運算。band= orange 合法,++band和band = orange +red無效。

列舉量是整型,可被提公升為int型別,如 int color = blue,color = 3+ red,其中的加法並非為列舉量定義,但是red被轉換為int型別,因此結果型別也是int。 在這種情況下,列舉將被轉換為int,因此可以在算術表示式中同時使用列舉和常規整數,儘管並沒有為列舉本身定義算數運算。但int型別不能自動轉換為列舉型別,如 band =3,無效。

band = orange+ red 無效原因:確實沒有為列舉定義運算子+,但用於算數表示式中時,列舉將被轉換為整數,因此orange+red被轉換為1+0。這是乙個合法的表示式,但其型別為int,不能將其賦給型別為spectrum的變數band

列舉的取值範圍

最初只有宣告中指出的值是有效的,c++現在通過強制型別轉換增加了可賦給列舉變數的合法值。每個列舉都有取值範圍,通過強制型別轉換,可將取值範圍中的任何整數賦給列舉變數,即使這個值不是列舉值。

enum bits;

bits myflag;

myflag = bits; 合法,因為6在bits的範圍內

第3章 處理資料

變數名 1 只能使用字母字元 數字和下劃線。2 名字的第乙個字元不能是數字。3 區分大小寫。4 不能將c 關鍵字用作名稱。整型 不同的硬體環境下整型所佔據的bit位數並不相同,但確保了最小長度 1 short至少16位。2 int至少和short一樣長。3 long至少32位,且至少和int一樣長。...

c primer plus 第3章 處理資料

c 的 基 本 類 型 分 為 兩 組 一 組 由 存 儲 為 整 數 的 值 組 成 另 一 組 由 儲存 為 浮 點 格 式 的 值 組 成 整 型 之 間 通 過 存 儲 值 時 使 用 的 內 存 量 及 有 無 符 號 來 區 分 整 型 從 最小 到 最 大 依 次 是 bool cha...

C Primer Plus 第3章 處理資料

第3章 處理資料 c 提供了內建型別來儲存兩種資料 整數 沒有小數的數字 和浮點數 帶小數的數字 為滿足程式設計師的各種需求,c 為每一種資料都提供了幾個型別。本章將要討論這些型別,包括建立變數和編寫各種型別的常量。另外,還將討論c 是如何處理不同型別之間的隱式和顯式轉換的。1.變數名 1 以兩個下...