1. 程式人生 > >C++Primer學習:第2章 變數和基本型別

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變數不是為用常量表達是初始化,那麼他就不應該在標頭檔案中定義。