C++Primer學習:第2章 變數和基本型別
第2章 變數和基本型別
2.1 基本內建型別
2.2 字面值常量
2.3 變數
2.4 const限定符
2.5 引用
2.6 typedef 名字
2.7 列舉
2.8 類型別
2.9 編寫自己的標頭檔案
2.1 基本內建型別
2.1.1 字元型別:
char 和 wchar_t , char通常是1byte;wchr_t用於擴充套件字符集比如漢字,佔用2byte;
char 有3種不同的型別:普通char、unsigned char、signed char,但只有2中表達方式。
可以使用unsigned char 或 signed char表示char型別,使用哪種char表示方式有編譯器決定。
2.1.2 浮點數
float型別只能保證6為有效數字;
double至少10為有效數字;
2.2字面值常量
2.2.1 整型字面值規則
以0(零)開頭的的字面值常量表示八進位制,以0x開頭表示十六進位制;
通過增加字尾,能強制將字面值整數常量轉換為long、unsigned或signed long
在數值後面加 L 指定為long型別
128u /* unsigned */
1L /* long */
1024UL /* unsigned long*/
8Lu /* unsigned long*/
沒有short型別的字面值常量
2.2.2 浮點字面值規則
預設的浮點字面值常量為double型;
在數值後面加上 F 或 f 表示單精度;
指數用 E 或 e 表示;
2.2.3 布林和字元字面值
'a' char型別,L'a' 表示wchar_t型別;
2.2.4 轉義字元
換行符 /n
縱向製表符 /v
回車符 /r
報警符 /a
疑問號 /?
雙引號 /"
水平製表符 /t
退格符 /b
進紙符 /f
反斜槓 //
單引號 /'
'/0' 空字元
2.2.5 字串字面值
C++中所有的字串都由編譯器自動在末尾新增一個空字元;
L"wchar_t" 寬字串;
2.2.6 字串的連線
兩個相鄰的僅由空格、製表符或換行符分開的字串,可連線成一個新的字串:
//concatenated long string literal
std::cout << "a multi-line "
"string literal "
"using concatenation"
<< std::endl;
output:
a multi-line string literal using concatenation
2.2.7 多行字面值
在一行末尾加一反斜槓符號可將次行和下一行當做同一行處理;
注意反斜槓必須是該行的尾字元,不允許其後面有空格或註釋
2.3 變數
2.3.1 C++是一門靜態型別語言,在編譯時會做型別檢查;
2.3.2 什麼是變數
變數提供了程式可以操作的有名字的儲存區;
2.3.3 定義物件
1)初始化 :
int ival(1024);
int ival = 1024 ;
2)初始化不是賦值:初始化時建立變數並給它賦初始值;賦值是擦除物件的當前值並用新值代替。
3)直接初始化語法更靈活且效率更高;
2.3.4 定義:用於為變數分配儲存空間,還可以為變數制定初始值,在一個程式中,變數有且僅有一個定義;
2.3.5 宣告:用於向程式表明變數的型別和名字,定義也是宣告;
2.3.6 extern
1)宣告變數而不定義;
2)如果宣告有初始化式,那麼它可被當做是定義,如
extern double pi = 3.14;
2.4 const限定符
2.4.1 定義const常量
因為常量在定義後不能修改,所以定義是必須初始化。
2.4.2 const物件預設為檔案的區域性變數
費const物件預設為extern, 要使const物件能夠在其他的檔案中訪問,必須顯式的指定他為extern。
2.5 引用
2.5.1 定義:引用就是物件的另一個名字,在實際程式中,引用主要用作函式的形式引數。
例:int ival = 1024;
int &refval = ival;
2.5.2 初始化
引用必須用於該引用同類型的物件初始化。
2.5.3 const 引用
const引用指向const物件的引用。
非const引用只能繫結到與該引用同類型的物件。
const引用可以繫結到不同但關聯的型別的物件或繫結到右值。
2.6 typedef
typedef可以用來定義型別的同義詞。
typedef通常被用於以下三種目的:
1.為了隱藏特定型別的實現,強調使用該型別的目的;
2.簡化複雜的型別定義,使其更易理解;
3.允許一種型別用於多個目的,同時使得每次使用該型別的目的明確。
2.7 類型別
1.從操作開始設計類。
2.8 標頭檔案
2.8.1 標頭檔案用於宣告而不是用於定義。
2.8.2 如果const變數不是為用常量表達是初始化,那麼他就不應該在標頭檔案中定義。