C++學(xué)習(xí)筆記——語句

條件語句

  1. if、if else語句:
    • if else語句:注意嵌套的合法性,建議使用花括號進(jìn)行流程控制。
    • 懸垂else:else將與離它最近的尚未匹配的if匹配,從而消除二義性。
  2. switch語句:
    • case標(biāo)簽:case關(guān)鍵字與其對應(yīng)的值,必須為整型常量表達(dá)式。
    • 任意兩個case標(biāo)簽的值不能相同,否則引發(fā)錯誤。
    • 如果某個case標(biāo)簽匹配成功,將從該標(biāo)簽開始往后順序執(zhí)行所有case分支,直至switch語句的結(jié)尾或遇顯式中斷。
    • case標(biāo)簽之后不一定需要換行。
    • default標(biāo)簽:如果沒有一個case標(biāo)簽可以匹配上switch表達(dá)式的值,程序?qū)?zhí)行default標(biāo)簽。
    • switch內(nèi)部的變量定義:如果在某處一個帶有初值的變量位于作用域之外,在另一處該變量位于作用域之內(nèi),則從前一處跳轉(zhuǎn)到后一處的行為是非法行為。(不允許跨過變量的初始化語句直接跳轉(zhuǎn)到該變量作用域內(nèi)的另一個位置)。
    • 如果為某一個case分支定義并初始化一個變量,應(yīng)該把變量定義在塊內(nèi),從而確保后面的所有case標(biāo)簽都在變量的作用域之外。

迭代語句

  1. while語句:
while(condition)
  statement
  1. 傳統(tǒng)for語句
for(initializer; condition; expression)  //initializer可以定義多個對象,但只能有一條聲明語句
  statement
  1. 范圍for語句
for(declaration: expression)  
//expression表示一個序列(初始化列表、數(shù)組、vector/string等)
//declaration定義一個變量(建議使用auto關(guān)鍵字),若statement中對變量進(jìn)行寫操作,需定義為引用類型
  statement
  1. do-while語句
do
  statement
while(condition);

跳轉(zhuǎn)語句

  1. break語句:終止離它最近的while、do-while、for、switch語句,并從這些語句之后的第一條語句開始執(zhí)行。
  2. continue語句:終止最近的循環(huán)語句中的當(dāng)前迭代并立即開始下一次迭代。
  3. goto語句:從goto語句無條件跳轉(zhuǎn)到同一函數(shù)的另一條語句。
    • 形式:goto label;
    • 帶標(biāo)簽語句:label: expression;
    • goto語句與switch語句類似,不能講程序的控制權(quán)從變量的作用域之外移到作用域之內(nèi)。
    • 程序中避免使用goto語句,降低程序可讀性。

異常處理語句

  1. 異常處理包括:
    • throw表達(dá)式:異常檢測部分使用throw表達(dá)式表示遇到了無法處理的問題,即throw引發(fā)了異常。
    • try語句塊:異常處理部分使用try語句塊處理異常,此語句塊以關(guān)鍵字try開始,一個或多個catch語句結(jié)束,catch語句可以處理異常,被稱為異常處理代碼。
    • 異常類:用于在throw表達(dá)式和相關(guān)的catch子句之間傳遞異常的具體信息。
  2. throw表達(dá)式:包含關(guān)鍵字throw和緊隨其后的一個表達(dá)式,其中表達(dá)式的類型就是拋出的異常類型。
if(item1.isbn() != item2.isbn())
  throw runtime_error("Data must refer to same ISBN");
//若程序執(zhí)行到了這里,表明兩個ISBN是相同的。
cout << item1 + item2 << endl;
  1. try語句塊:
try{
  program-statements
}catch(expression-declaration){
  handler-statements
}catch(expression-declaration){
  handler-statements
}//…
  • 沒有匹配的catch子句:程序轉(zhuǎn)到名為terminate的標(biāo)準(zhǔn)庫函數(shù),進(jìn)行缺省處理。
  1. 標(biāo)準(zhǔn)異常:
    • exception:定義最常用的異常類,只報告異常的發(fā)生,不提供額外信息。
    • stdexcept:定義了幾種常用的異常類,詳細(xì)信息見下。
    • new:定義了bad_alloc異常類型。
    • type_info:定義bad_cast異常類型。
    • exception、bad_alloc、bad_cast:只能默認(rèn)初始化。
    • 其他類型:不允許默認(rèn)初始化,應(yīng)使用string類型或C風(fēng)格字符串進(jìn)行初始化。
    • 異常類只有一個成員函數(shù)what(),無參數(shù),返回值是指向C風(fēng)格字符串的const char*。

5.stdexcept中定義的異常類:

  • exception:最常見的問題。
  • runtime_error:只有在運行時才能檢測出的問題。
  • range_error:運行時錯誤——產(chǎn)生的結(jié)果超出了有意義的值域范圍。
  • overflow_error:運行時錯誤——運算上溢。
  • underflow_error:運行時錯誤——運算下溢。
  • logic_error:程序邏輯錯誤。
  • domain_error:邏輯錯誤——參數(shù)對應(yīng)的結(jié)果值不存在。
  • invalid_argument:邏輯錯誤——無效參數(shù)。
  • length_error:邏輯錯誤——試圖創(chuàng)建一個超出該類型最大長度的對象。
  • out_of_range:邏輯錯誤——使用一個超出有效范圍的值。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,585評論 0 13
  • 作者的序言 朋友們,棄療系列4出來啦,作者還并沒有放棄,感覺自己萌萌噠,233。 語句 js程序其實就是一系列可執(zhí)...
    zhaolion閱讀 1,826評論 0 8
  • 一、Java 簡介 Java是由Sun Microsystems公司于1995年5月推出的Java面向?qū)ο蟪绦蛟O(shè)計...
    子非魚_t_閱讀 4,581評論 1 44
  • 剛畢業(yè)也剛失業(yè),媽媽打來電話,你最近怎么樣?我回答說:“我很好,你放心吧!”其實你不說,別人永遠(yuǎn)不知道你經(jīng)歷過什么...
    二五八萬子閱讀 353評論 0 0
  • 2017.07.31 周一 小雨轉(zhuǎn)晴 兒子的暑假作業(yè)有一項是語文摘抄。老師規(guī)定了本子和要求。暑假已經(jīng)過去...
    戴驍勇閱讀 449評論 0 0

友情鏈接更多精彩內(nèi)容