第五章 語句
5.1 簡單語句
C++語言中的大多數語句都以分號結束,一個表達式末尾加上分號就變成了表達式語句。
- 空語句 :最簡單的語句是空語句,空語句中只包含一個單獨的分號。
- 別漏寫分號,也別多寫分號
iVal=v1+v2;; //正確: 第二個分號表示一條多餘的空語句
//出現糟糕的情況:額外的分號,循環體是那條空語句
while(iter!=svec.end()); //遞增運算符屬於循環體的一部分
++iter;
- 符合語句(塊)
5.2 語句作用域
作用域這塊在前面已經介紹過,個人理解最重要。
5.3 條件語句
5.3.1 if語句
- if語句 作用是:判斷一個指定的條件是否爲真,根據判斷結果決定是否執行另外一條語句。
- 一種包含else分支
if(condition)
{
statement;
} - 一種不包含else分支
if(condition)
{
statement;
}
else
{
statement2;
}
- 一種包含else分支
string lettergrade;
if(grade<60)
{
lettergrade=scores[0];
}
else
{
lettergrade=scores[(grade-50)/10];
}
5.3.2 switch語句
- switch語句提供了一條便利的途徑使得能夠在若干固定選項中做出選擇。
unsigned aCnt=0,eCnt=0,iCnt=0,oCnt=0,uCnt=0;
char ch;
while(cin>>ch)
{
switch(ch)
{
case 'a':
++aCnt;
break; //break不能省略 break是跳出的意思,不在執行包含在switch下面的語句
case 'e':
++eCnt;
break;
case 'i':
++iCnt;
break;
case 'o':
++oCnt;
break;
case 'u':
++uCnt;
break;
default: //除了上面的情況,默認的情況都用default中的語句處理
break;
}
}
例子說明一切
5.4 迭代語句
5.4.1 while語句
- 使用while循環:當不確定到底要迭代多少次時,使用while循環比較合適。
vector<int> iVector;
int i;
//重複讀入數據
while(cin>>i)
{
iVector.push_back(i);
}
5.4.2 傳統的for語句
- 傳統的for語句
//傳統for語句
for(int i=0;i<100;i++)
{
cout<<i<<endl;
}
- 傳統for語句循環的執行流程
- 循環開始時,首先執行一次init-statement。上例中執行 定義 i 並初始化爲0。
- 接下來判斷condition。上例中判斷 i 是否能使 i<100 條件爲true
- 如果condition爲真,執行循環體;如果condition爲假,則結束。上例中輸出 i 值
- 最後執行expression。 上例中 i的值加1。
- for語句頭中的多重定義
for(decltype(v.size) i=0,sz=v.size();i!=sz;++i)
{
v.push_back(v[i]);
}
- 省略for語句頭的某些部分
for(;;)
for(int i=0;i<100;)
for(;i<30;i++)
for(int i=0;;i++)
5.4.4 do while語句
do while語句 和while 語句非常相似,唯一的區別是 do while語句先執行循環體後檢查條件。至少執行一次循環。
5.5 調整語句
C++語言中提供了4中調整語句: break、continue、goto、return。
5.5.1 break語句
break 語句 負責終止離它最近的while、do while、for或switch語句,並從這些語句之後的第一條語句開始繼續執行。
5.5.2 continue語句
continue語句 終止最近的循環中的當前迭代並理解開始下一次迭代。 只出現在 for、while、do while循環的內部。
5.5.3 goto語句
goto語句 的作用是從goto 語句無條件跳轉到同一函數內的另一條語句。
不要在程序中使用goto語句,因爲它使得程序既難理解又難修改。
5.6 try語句塊和異常處理
異常是指存在於運行時的反常行爲,這些行爲超出了函數正常功能的範圍。
- 異常處理機制爲程序中異常檢測和異常處理這兩部分的協作提供支持。
- throw表達式 異常檢測部分使用throw表達式來表示它遇到了無法處理的問題。我們說throw引發了異常。
- try語句塊 異常處理部分使用try語句塊處理異常,並以一個或多個catch子句結束。
- 一套異常類 用於在throw表達式和相關的catch子句之間傳遞異常的具體信息。
本章感覺學了很多東西,又感覺沒有什麼東西,可是後面用的全是這些東西。