第二章 變數和基本型別1

2021-06-28 22:31:06 字數 2170 閱讀 1590

關於c++的幾篇部落格,參考人民郵電出版社的《c++ primer 中文版》一書。

c++的基本內建型別包括:void型別、布林值、單個字元、整型、浮點型(5種)。

其中:void通常作為無返回值的函式的返回值型別。

布林值bool,可以為其賦任何值,0即false,非0即true。

單個字元即c語言中的字元常量,unsigned char範圍為0~255。

整型:預設為signed,如果想定義無符號的需要加上unsigned。表示signed整型最常見的策略是第一位為符號位,1表示負數,0表示正數。如果越界,則賦值時是取該值對該型別取值數目求模後的值。例如,如果將336賦值給unsigned char型,則實際上賦值為80。

浮點型:單精度float,雙精度double,擴充套件精度long double。

字面值常量的幾個規則:

1、20 //十進位制decimal;024 //八進位制octal;0x14 //十六進製制hexadecimal (注意:八進位制和十六進製制開頭的是數字0,不是字母o)

2、unsigned long型常量可表示為128ul或128lu

3、預設的整數常量為int或long型,預設的浮點數常量為double型別。

4、浮點字面值常量,預設為double,在後面加f或f表示單精度float,加上l表示擴充套件精度long double型。科學計數法表示浮點常量時,指數用e或e表示。舉例:1e-3f,12.345l。

5、字元型常量用單引號。字串型常量用雙引號,並在末位增加乙個空字元 '\0'。字元或字串常量前面加l,能得到相應的wchar_t型別的寬字元或寬字串。

6、不可列印字元和特殊字元都用轉義字元書寫。前者包括退格和空格等,後者包括單引號、雙引號、反斜槓等。

7、兩個相鄰的僅由空格、製表符或換行符分開的字串字面值,可自動連線成乙個新字串字面值。

關於變數,我們必須回答這樣幾個問題:

什麼是變數?變數的定義?變數的宣告?定義和宣告的區別?如何初始化?變數的作用域?

一、什麼是變數?

變數,就相當於是為程式可以操作的一段儲存區,起了個名字。物件,廣義上泛指記憶體中一切具有型別的區域。

變數的型別,決定了分配給變數的儲存空間的大小,以及可以在其上執行的操作。

二、變數的初始化和定義

關於初始化,需要建立以下幾個概念:

1、初始化不是賦值,是兩種不同的操作。這點比較微妙,暫時不做解釋。

2、c++有兩種初始化形式:複製初始化,如 int i=1000;直接初始化,如 int i(1000)。

對於內建型別,兩種方式幾乎無差別;對於class型別的物件,有些初始化只能用直接初始化完成。

3、預設的初始化

(1)對於內建型別

全域性變數或靜態變數,預設初始化為0或者null,也就是會自動做初始化。區域性變數,如果不做顯示的初始化,就是未定義的,預設值是無意義的,這樣做是危險的。

(2)對於class型別

如果沒做顯示初始化,那麼會使用預設建構函式進行物件的初始化。顯示的初始化呼叫的是建構函式。

例:std::string all_lines(10, '9');  // all_lines = "9999999999",呼叫了string類的一種已定義的建構函式。

std::string empty;   // empty = " ",呼叫了string類的預設建構函式,該預設建構函式的作用是將empty預設初始化為空字串。

三、變數的宣告和定義的區別

1、定義,為變數分配儲存空間;宣告,只是告訴程式變數的型別和名字,說明其定義在其他地方,且儲存空間已在其定義處分配好。廣義上說,定義也是宣告。

2、因為定義即分配儲存空間,所以在乙個程式中,相同含義的變數的定義只能出現一次,而宣告可以出現多次。

3、使用變數前,必須先對變數進行定義或宣告。任何在多個檔案中使用的變數,宣告和定義都必須是分離的。即,乙個檔案含有變數的定義,在其他檔案中使用該變數時,需要先宣告(而不是定義),再使用。

四、變數的作用域

變數的作用域,即變數的可見程式段或檔案,一般是用大括號來界定的。

外部的變數,可以在內部作用域中被操作,也可以被重新定義。在內部重新定義的變數,將覆蓋外部變數,且其作用域只限於內部。當內部作用域結束時,內部變數的儲存區被釋放,外部變數重新起作用,且其值仍然等於進入內部作用域之前的值。這是因為程式呼叫的主體永遠是以儲存塊為單位的,並不是名字本身。(當然,我們一般不這樣做,即內部作用域的變數名與外部起得一樣,以免造成混淆。)

第二章 變數和基本型別

第二章 變數和基本型別 1 基本內建型別 1 有效數字 float 6位 double 10位 2 符號位 使用一位符號位的表示方式的8位signed整型取值是 128到127 3 越界賦值 取值數目求模 2 字面值常量 1 無符號長整型 1024ul 2 字串 自動在末尾新增乙個空字元 3 變數 ...

第二章 變數和基本型別

識別符號 運算子 宣告符 2.3 復合型別 基於其他型別定義的型別 1.引用 定義引用時,程式把引用和它的初始值繫結 bind 在一起,而不是將初始值拷貝給引用。一旦初始化完成,引用將和他的初始值一直繫結在一起,所以無法令引用重新繫結到另外乙個物件,所以引用必須初始化 2.指標 指標本身是乙個物件,...

第二章 變數和基本型別

切勿混用帶符號數和無符號數 include using namespace std int main 輸出的結果一直都是no,所以不可混用,請注意size 返回的是size type型別,而該型別也是unsigned的。只有內建型別存在字面值,字面值常量的值是不能修改的 它存放在 段中 內建型別的全...