c++語句分類
語句
空語句
宣告語句
表示式語句
- 格式: 表示式;
- 表示式語句與表示式的區別: 表示式可以包含在其他表示式中,而 語句不可。
例如: if ((a = b) > 0) t = a; 不可寫為: if ((a = b;) > 0) t = a;
複合語句
將多個語句用一對大括號包圍, 便構成一個複合語句
• 例如 { sum=sum+i; i++; }
選擇語句
1. if三種結構
- if (表示式) 語句
例: if (x > y) cout << x;
- if (表示式) 語句1 else 語句2
例: if (x > y) cout << x; else cout << y;
- if (表示式1) 語句1 else if (表示式2) 語句2 else if (表示式3) 語句3 … else 語句 n
2. 多分支問題
- if 語句——巢狀
- 一般形式 if( ) if( ) 語句 1 else 語句 2 else if( ) 語句 3 else 語句 4
- 注意 語句 1、 2、 3、 4 可以是複合語句,每層的 if 與 else 配對,或用 { } 來確定層次關係。
- switch 語句
- case分支可包含多個語句,且不用{ }。
- 表示式、判斷值都是int型或char型。
- 若干分支執行內容相同可共用一組語句。
迴圈語句
-
while迴圈
- 形式 while (表示式) 語句 可以是複合語句,其中必須含有 改變條件表示式值的語句。
- 執行順序 先判斷表示式的值,若為 true 時,執行語句。
-
do…while迴圈
- 一般形式 do 語句 while (表示式) 可以是複合語句,其中必須含 有改變條件表示式值的語句。
- 執行順序 先執行迴圈體語句,後判斷條件。 表示式為 true 時,繼續執行迴圈體
- 與while語句的比較: –while 語句執行順序 先判斷表示式的值,為true時,再執行語句
-
for迴圈
- 語法形式
跳轉語句
- break語句 使程式從迴圈體和switch語句內跳出,繼續執行邏輯上的下一條語句。不宜用在別處。
- continue語句 結束本次迴圈,接著判斷是否執行下一次迴圈。
輸入與輸出
• 向標準輸出裝置(顯示器)輸出 例: int x; cout << “x=” << x; • 從標準輸入裝置(鍵盤)輸入 例: int x; cin >> x;
自定義資料型別
typedef語句
• 為一個已有的資料型別另外命名 • 語法形式 typedef 已有型別名 新型別名錶;
• 例如 typedef double Area; Area a;
• 不推薦使用,降低可讀性
列舉型別–enum
• 只要將需要的變數值一一列舉出來,便構成了一個列舉型別。 • 列舉型別的宣告形式如下: enum 列舉型別名 {變數值列表};
• 例如: enum Weekday {SUN, MON, TUE, WED, THU, FRI, SAT};
• 列舉型別應用說明:
- 對列舉元素按常量處理,不能對它們賦值。例如,不能寫: SUN = 0;
- 列舉元素具有預設值,它們依次為:0,1,2,…。
- 也可以在宣告時另行指定列舉元素的值,如: enum Weekday {SUN=7,MON=1,TUE,WED,THU,FRI,SAT};
- 列舉值可以進行關係運算。
- 整數值不能直接賦給列舉變數,如需要將整數賦值給列舉變數,應進行強制型別轉換
設某次體育比賽的結果有四種可能:勝(WIN)、負(LOSE)、平局(TIE)、比賽取(CANCEL),編寫程式順序輸出這四種情況。
結構體 --> struct
- 結構的概念 –結構是由不同資料型別的資料組成的集合體。
- 宣告結構型別 struct 結構名 { 資料型別 成員名 1; 資料型別 成員名 2; : 資料型別 成員名 n; };
舉例: struct student //學生資訊結構體 { int num; //學號 char name[20]; //姓名 char sex; //性別 int age; //年齡 float score; //成績 char addr[30]; //住址 };
- 變數說明形式 結構名 結構變數名;
- 注意:
- 結構變數的儲存型別概念、它的壽命、可 見性及使用範圍與普通變數完全一致。
- 結構變數說明在結構型別宣告之後,二者 也可同時進行。
- 結構變數佔記憶體大小可用 sizeof 運算求 出: sizeof(運算量)
- 結構體的初始化和使用
- 初始化 說明結構變數的同時可以直接設定初值。
- 使用 結構體成員的引用形式: 結構變數名.成員名
聯合體
- 宣告形式: union 聯合名 { 資料型別 成員名 1; 資料型別 成員名 2; : 資料型別 成員名 n; };
- 聯合體型別變數說明的語法形式 聯合名 聯合變數名;
- 引用形式: 聯合名.成員名
例如: union uarea { char c_data; short s_data; long l_data; }
- 無名聯合 • 無名聯合沒有標記名,只是宣告一個成員項的集合,這些成員項具有相同的記憶體地址,可以由成員項的名字直接訪問。
例: union { int i; float f; } 在程式中可以這樣使用: i=10; f=2.2;
變數工作機制
變數兩個重要屬性:
- 資料型別 – 任何資料在記憶體中都是用二進位制串的形式表示的; – 一串二進位制數,只有確定了型別,才有真實的含義;
例: 10111111,10000000,00000000,00000000 •解釋為int型: -1,082,130,432 •解釋為unsigned型: 3,212,836,864
- 變數名 –原始碼中,變數依靠變數名來標識; –目的碼中,變數依靠地址來標識,每 個變數的地址互不相同。
- 變數的宣告 –將一個識別符號宣告為變數,告訴編譯器這個識別符號表示變數,同時還指出了它的資料型別; –只有確定了一個變數的資料型別,變數參與的操作才具有完整的意義,編譯器才能將該變數參與的表示式翻譯為合適的操作。
- 變數的定義 –不僅確定了一個識別符號表示變數,以及該變數的型別,還確定了變數地址的分配位置。
表示式執行原理
- 暫存器: –CPU內部的儲存單元 –讀寫速度非常快 –數量很少
- 大部分CPU指令都需要讀寫暫存器。
- 複雜的表示式,分步執行,每條指令只能做一次基本運算,中間結果暫存在暫存器中。