變數提供乙個具名的、可供程式操作的儲存空間。一般而言,"變數(variable)"和「物件(object)"可以互換使用。
變數定義基本形式:首先是型別說明符(type specifier),隨後緊跟由乙個或多個變數名組成的列表,變數名以逗號分隔,最後以分號結束。
初始值
物件在建立時獲得了乙個特定的值,稱為物件被初始化(initialized)。用於初始化變數的值可以是任意複雜的表示式。
在同一條定義語句中,可以用先定義的變數值去初始化後定義的其他變數。
初始化不是賦值,初始化的含義是建立變數時賦予其乙個初始值,賦值的含義是把物件當前的值擦除,以乙個新值來替代。
列表初始化
初始化有幾種不同的形式,例如定義乙個名為 units_sold 的 int 變數並初始化為 0,以下語句均可實現:
int units_sold =0;
int units_sold =
;int units_sold
;int
units_sold(0
);
利用花括號進行初始化的形式被稱為列表初始化(list initialization),初始化物件或某些情況下為物件賦新值,均可使用列表初始化。
使用列表初始化且初始值存在資訊的風險,編譯器將報錯,如:
long
double ld =
3.1415926536
;int a
, b =
;// 錯誤: 轉換未執行,因為存在丟失資訊的危險
inta
(ld)
, b = ld;
// 正確: 轉換執行,且確實丟失了部分值
預設初始化如果定義變數時沒有定義初始值,則變數被預設初始化(default initialized)。預設值到底是什麼由變數型別決定,同時定義變數的位置也會對此有影響。
如果是內建型別的變數未被顯式初始化,它的值由定義的位置決定:
每個類各自決定其初始化物件的方式,而且,是否允許不經初始化就定義物件也由類自己決定。
std::cin >>
int input_value;
// 錯誤:輸入運算子的右側需要乙個明確的變數名稱
int i =
;// 告警
double salary = wage =
9999.99
;// 錯誤:在宣告語句中宣告多個變數時需要用逗號將變數名隔開,不能直接用賦值運算子連線
int i =
3.14
;// 告警
為了支援分離式編譯,c++ 語言將宣告和定義區分開來。
宣告(declaration)使得名字為程式所知,定義(definition)負責建立與名字關聯的實體。
變數宣告規定了變數的型別和名字,定義則還申請儲存空間,也可能會為變數賦乙個初始值。
如果想宣告乙個變數而非定義它,就在變數名前新增關鍵字extern
,而且不要顯式地初始化變數。
任何包含了顯式初始化的宣告即成為定義,extern
語句如果包含初始值就不再是宣告,而變成了定義。
變數的定義必須出現且只能出現在乙個檔案中,而其他用到該變數的檔案必須對其進行宣告,卻絕對不能重複定義。
識別符號由字元、數字和下劃線組成,其中必須已字母或下劃線開頭。使用者自定義的識別符號不能使用 c++ 保留的名字,不能連續出現兩個下劃線,也不能已下劃線緊連大寫字母開頭,定義在函式體外的識別符號不能以下劃線開頭。
變數命名規範
絕大多數作用域都以花括號分隔。同乙個名字在不同的作用域可能指向不同的實體。名字的有效區域始於名字的宣告語句,以宣告語句所在的作用域末端為結束。
巢狀作用域
作用域能彼此包含,被包含(被巢狀)的作用域稱為內層作用域(inner scope),包含著別的作用域的作用域稱為外層作用域(outer scope)。
作用域中一旦宣告了某個名字,它所巢狀著的所有作用域中都能訪問該名字。同時,允許在內層作用域中重新定義外層作用域已有的名字。
第二章 變數和基本型別
第二章 變數和基本型別 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的。只有內建型別存在字面值,字面值常量的值是不能修改的 它存放在 段中 內建型別的全...