5.1 簡單語句
;? //空語句
類似python中的pass。在循環(huán)中有時(shí)就會(huì)用到。
別漏寫分號(hào),也別多寫。一般來說多余的空語句是無害的,但是如果在if或者while條件后跟了一個(gè)額外的分號(hào)就可能改變程序員的初中部。
復(fù)合語句也被稱作塊,指用花括號(hào)擴(kuò)起來的(可能為空的)語句和聲明的序列。一個(gè)塊就是一個(gè)作用域。如while或for循環(huán)的循環(huán)體必須是一條語句,{ }就是把可能的多條語句轉(zhuǎn)變成一條復(fù)合語句(塊)。
塊也可為空,指內(nèi)部沒有任何語句的一對(duì)花括號(hào)。其作用等價(jià)于空語句。
5.2 語句作用域
5.3 條件語句
懸垂else:c++規(guī)定else與它最近的尚未匹配的if匹配。
switch的case必須為整型常量表達(dá)式。并且case如果匹配成功,將從該標(biāo)簽開始往后順序執(zhí)行所有case分支,除非程序顯式中斷這一過程。
例子:?
switch (ch)
{
? ? case 'a': case 'e': case 'i': case 'o': case 'u':? //只要是aeiou中任意一個(gè)都會(huì)執(zhí)行
? ? ? ? ? ? ? ? ++vowelCnt;
? ? ? ? ? ? ? ? break;
}
一般來說不要省略case分支最后的break語句。
即使不準(zhǔn)備在default標(biāo)簽下做任何工作,定義一個(gè)default標(biāo)簽也是有用的。目的在于告訴讀者我們已經(jīng)考慮到了默認(rèn)的情況。
對(duì)于switch內(nèi)部的變量定義部分,很有趣。
參考:https://blog.csdn.net/neuwyt/article/details/48968039
https://www.zhihu.com/question/23051685
另外,變量的聲明與定義不是語句?。?!
重點(diǎn)是:
初始化操作和定義變量對(duì)于編譯器來說是兩回事,
初始化操作是一個(gè)確確實(shí)實(shí)在運(yùn)行時(shí)才會(huì)被調(diào)用的語句,是可以被case跳轉(zhuǎn)屏蔽掉的語句;而定義是在編譯時(shí)期就完成檢查的。
------------
疑惑點(diǎn):
switch(index){ case 1: int ix = 2; break; default: int ix = 3; break; }
為何這個(gè)報(bào)錯(cuò)?上述代碼不存在定義,每次執(zhí)行必然進(jìn)入不同的case,ix只可能被初始化一次,仍然報(bào)錯(cuò) error: redefinition of 'ix'
5.4 迭代語句
5.5 跳轉(zhuǎn)語句
goto語句作用是從goto語句無條件跳轉(zhuǎn)到同一函數(shù)內(nèi)的另一條語句。
不要在程序中使用goto語句,因?yàn)樗沟贸绦蚣入y理解又難修改。
5.6 try語句塊和異常處理
異常處理機(jī)制為程序中異常檢測(cè)和異常處理這兩部分的協(xié)作提供支持。
throw表達(dá)式,異常檢測(cè)部分使用throw表達(dá)式來表達(dá)它遇到了無法處理的問題,我們說throw引發(fā)了異常。
try語句塊,異常處理部分使用try語句塊。以關(guān)鍵字try開始,并以一個(gè)或多個(gè)catch子句結(jié)束。因?yàn)閏atch子句處理異常,所以也被稱作異常處理代碼。
一套異常類,用于在throw和catch之間傳遞異常的具體信息。
編寫異常安全的代碼非常困難,異常中斷了程序的正常流程。那些在異常發(fā)生期間正確執(zhí)行了“清理”工作的程序被稱作異常安全的代碼。然而經(jīng)驗(yàn)表明,編寫異常安全的代碼非常困難。對(duì)于一些程序來說,當(dāng)異常發(fā)生時(shí)只是簡單終止程序,此時(shí)則不需要怎么擔(dān)心異常安全。在google style guide里指明了不使用異常。
標(biāo)準(zhǔn)異常庫<stdexcept>。
https://www.cnblogs.com/ronny/p/3656559.html