1. 程式人生 > >關於語句的註意事項

關於語句的註意事項

使用範圍 字符指針 組成 cat 功能 括號 類型 解決 問題

1、表達式語句的作用是執行表達式並丟棄掉求值結果。

2、使用空語句時,應該加上註釋,從而令這段代碼的讀者知道該語句故意省略。

3、多余的空語句,並非總是無害的,比如說在循環語句的條件後面加上分號,表示循環空語句,真正的循環體是空語句。

4、復合語句,也稱為塊,就是用花括號括起來的一個作用域,在塊中引入的名字只能在塊中以及其嵌套在塊中的子塊訪問。一般用在函數、循環語句中,為了執行多條語句,將這些語句復合形成一條復合語句。

5、空塊等價於空語句。

6、由於在控制結構定義的變量要馬上使用,所以必須初始化,所謂控制結構就是if、for、while、switch的結構內。

7、if語句的condition必須是能夠轉換成bool類型的表達式或者變量(已初始化的)。

8、當if分支的數量多於else分支,那麽,就會出現懸垂else。

9、switch語句括號裏的是表達式,會對其進行求值,然後與case標簽裏的值進行匹配,若成功,則執行到switch語句結束,或者遇到break跳出switch語句break語句其作用是中斷當前控制流

10、case標簽必須是整型常量表達式,一般case後面都要加個break的,若程序需要,不想加break語句,則建議加一段註釋,說明程序的邏輯

11、標簽後面必須跟上一條語句或者另一個標簽。若想以一個空的標簽結束的話,應該在標簽後面加上一個空語句或空塊。

12、若在某處一個帶有初值的變量位於作用域之外,在另一處,該變量位於作用域之內,則從前一處跳轉到後一處是非法的行為。也就是說,如果switch跨過的標簽的作用域裏,有一個對一個變量初始化的操作,那麽跨過之後,執行下一個標簽時,裏面作用域使用到了前面初始化的變量,由於switch忽略了前面的初始化操作,所以該行為是非法的。C++語言規定,不允許跨過初始化變量語句,直接跳轉到該變量作用域內的另一個位置。

13、若需要給一個分支定義並初始化一個變量,應該將其定義在塊內,這樣其他分支就沒有辦法去訪問這個變量。

14、C++語言規定,case標簽後面只能跟一個值

15、for語句,如果第一次判斷cond為假,那麽循環體中一次也不會執行。語句頭中定義的變量,只在該for語句循環體內可見。

16、for語句的init-statement可以聲明定義多個對象,但是只能只有一條聲明語句,也就是說,聲明的多個對象的類型必須相同。

17、for語句如果省略了condition,表示條件一直為真,一般要在循環體中書寫終止循環的代碼。如果省略了expression,那麽需要在條件部分或者循環體部分實現叠代的功能。

18、範圍for語句的expression中的類型,是擁有能夠返回叠代器的begin和end成員,並且不能使用範圍for語句添加容器的元素,由於在範圍for語句頭已經預存了end()的值,如果添加容器元素,之前預存的值就會無效化。

19、do while語句應該在while條件後加個分號,並且不允許在do while條件部分定義變量。

20、break跳轉語句,可以跳出或終止離它最近的while、for、do while或者switch語句。

21、continue語句,終止最近的循環中的當前叠代,並立即開始下次叠代。但是它不作用於switch語句,除非switch語句嵌套在叠代語句中。

22、goto語句,無條件跳轉到同一函數內的另一條語句。《C++ primer fifth》建議我們不要在程序中使用該語句,會使得程序很難理解,而且很難修改。與switch語句類似,不能將程序的控制權從變量作用域之外轉移到作用域之內。

23、goto語句後面的標簽,獨立於變量或其他的標識符的名字。所以使用時,不會因為使用同一個名字而受到幹擾。

24、異常是指運行時出現的反常行為,這些行為超過了函數的正常功能範圍。

25、異常檢測是指檢測到異常,然後發送信號,異常的檢測就完成了,不需要知道信號發到哪裏,即不需要知道故障何時何地得到解決,異常檢測使用了throw表達式,當遇到一個無法處理的問題,throw就會引發一個異常。

26、異常處理,使用try語句塊,一般以關鍵字try開始,以多個catch子句結束,而catch(捕捉)負責處理異常的。也稱異常處理代碼。

27、throw拋出異常,catch子句捕捉異常,之間有一套異常類負責傳遞異常的具體信息。

28、throw後面的表達式類型就是拋出異常的類型。標準庫異常類型的對象,必須使用一個string對象或者C風格字符串對其進行初始化。標準庫異常類型的對象都有一個what()成員函數,其返回前面初始化對象時所使用的string對象的副本。並且其類型是常量字符指針類型。

29、try語句塊中關鍵詞try後是一個語句塊,該塊外部不能訪問,其組成正常的程序邏輯;多個catch子句在其關鍵字後的括號是一個對象的聲明(異常對象)。註意:catch子句也不能訪問try後面的語句塊。

30、尋找處理代碼的過程與函數調用的路徑剛好相反,如果一個函數拋出異常,然後在該函數中沒有找到匹配的catch子句,那麽會回退到調用該函數的函數,繼續尋找,若沒找到,則再回退,直到找到為止,如果最終還是沒有找到,那麽就會轉到名叫terminate的標準函數中,該函數的行為與系統有關,一般情況下執行該函數將使程序非正常退出。

31、在異常發生期間正確執行了“清理”工作的程序被稱作異常安全的代碼。

32、對於exception、bad_alloc和bad_cast異常對象,不允許給這些對象提供初始值,只能執行默認初始化。其他類型則相反。what函數的返回值根據異常對象決定,若是前者則是返回由編譯器決定的值,若是後者則是返回提供的字符串。

關於語句的註意事項