3.3 選擇結構
1語句
if語句又稱為條件語句,它是程序設計語言中最常見的一種選擇語句。
(1)基本if語句
基本if語句的功能是根據(jù)給定條件是否成立來決定要不要執(zhí)行一條語句或語句塊,它的語法格式如下:
if(<條件>)<語句>
其中,if為關鍵字;<條件>通常是一個表達式且必須用圓括號包圍起來;<語句>稱為if子句,它可以是任何類型的語句(包括復合語句和空語句)。
基本if語句的執(zhí)行過程是:首先計算<條件>的值,如果此值不為0(“真”),則執(zhí)行<語句>;如果此值為0(“假”),則忽略<語句>(即不執(zhí)行)而繼續(xù)執(zhí)行if語句之后的下一條語句。
說明:
、貱+ +中規(guī)定:如果<條件>是一個表達式,則當此表達式的值不為0時,條件結果為“真”;只有當此表達式的值為0時,條件結果才為“假”。
、<條件>也可以是一條聲明語句,其中必須定義一個變量并對它進行初始化。這時,若此變量的值不為0,則條件結果為“真”;若此變量的值為0,則條件結果為“假”。
(2)if…else語句
if…else語句是基本if語句的擴展,其功能是根據(jù)給定條件是否成立來決定執(zhí)行兩部分語句中的哪一部分,其語法格式如下:
if(<條件>)
<語句1>
else
<語句2>
其中,if和else為關鍵字;<語句1>稱為if子句,<語句2>稱為else子句,它們可以是單條語句或復合語句。
if…else語句的執(zhí)行過程是:首先計算<條件>的值,如果此值不為0(“真”),則執(zhí)行<語句1>,然后忽略<語句2>而去執(zhí)行if語句之后的下一條語句;如果此值為0(“假”),則忽略<語句1>,執(zhí)行<語句2>,然后繼續(xù)執(zhí)行if語句之后的下一條語句。
(3)if語句的嵌套
if子句和else子句可以是任何類型的C+ +語句,當然也可以是if…else語句本身。通常將這種情況稱為if語句的嵌套。
2switch
switch語句又稱為開關語句,它也是一種選擇語句。switch語句的功能是根據(jù)給定表達式的不同取值來決定從多個語句序列中的哪一個開始執(zhí)行,其語法格式如下:
switch(<表達式>){
case<常量表達式1>:
<語句序列1>
case<常量表達式2>:
<語句序列2>
…
case<常量表達式n>:
<語句序列n>
default:
<語句序列n+1>
。
其中,switch,case和default為關鍵字;<表達式>的值必須屬于整型、字符型或枚舉型。<常量表達式i>(i=1,2…n)是取值互不相同的整型常量、字符常量或枚舉常量,其具體類型應與<表達式>的值相一致。<語句序列i>(i=1,2…n,n+1)可以是任意多條語句。
switch語句的執(zhí)行過程是:
(1)首先計算出<表達式>的值,設此值為E;
(2)然后計算每個<常量表達式i>的值,設它們分別為C1,C2,…,Cn;
(3)將E依次與C1,C2,…,Cn進行比較。如果E與某個值相等,則從該值所在的case標號語句開始執(zhí)行各個語句序列,在不出現(xiàn)跳轉語句的情況下,將一直執(zhí)行到switch語句結束!
(4)如果E與所有值都不相等且存在default標號,則從default標號語句起開始向下執(zhí)行,直到switch語句結束(同樣,在不出現(xiàn)跳轉語句的情況下)。
(5)如果E與所有值都不相等且不存在default標號,則switch語句不會執(zhí)行任何操作。
說明:
(1)多個case標號可以共用一組語句序列,以實現(xiàn)對于幾個常量值都執(zhí)行同一操作。
(2)default標號語句是可選的。當default不出現(xiàn)時,如果<表達式>的值與所有<常量表達式i>(i=1,2…n)的值都不相等,則程序執(zhí)行流程會跳過switch語句。
(3)switch語句是可以嵌套的。case和default標號只與包含它們的最內層的switch組合在一起。
(4)當需要針對表達式的不同取值范圍進行不同處理時,使用if…else…if階梯結構比較方便。因為switch語句只能對相等關系進行測試,而if語句卻可以用關系表達式對一個較大范圍內的值進行測試。
編輯推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |