if...else 條件結(jié)構(gòu)中,如果某個(gè)分支只包含一條命令,那么是可以省略大括號(hào){}的。比如上一節(jié)的練習(xí),可以簡(jiǎn)化為:
請(qǐng)注意,如果分支中包含2條以上的命令,是不能省略{}的。
如果 if 和 else 比較多,又省略了{(lán)},怎么判斷那一個(gè) if 和哪一個(gè) else 是一對(duì)呢?請(qǐng)看下面的代碼:
當(dāng)出現(xiàn)多個(gè) if 和 else ,又沒(méi)有{}來(lái)界定范圍時(shí),請(qǐng)參考下面2條原則:
①每一個(gè) else 與前面離它最近的 if 配對(duì)。按照這個(gè)原則,上面示例代碼的兩個(gè) else 都與第二個(gè) if 配對(duì),這顯然是不可能的,于是又有了第二個(gè)原則。
②多個(gè) else 都與同一個(gè) if 相近時(shí),最內(nèi)層的 else 優(yōu)先配對(duì)。這樣,第一個(gè) else 處于內(nèi)層,就與第二個(gè) if 優(yōu)先配對(duì),第二個(gè) else 只能與第一個(gè) if 配對(duì)。上面的示例代碼會(huì)輸出“C”。
根據(jù)這兩個(gè)原則,上面的代碼等同于如下的規(guī)范代碼:
編寫(xiě)條件結(jié)構(gòu)時(shí),盡可能加上 {} 可以省掉不必要的錯(cuò)誤和麻煩。
右邊的代碼省略掉了 if...else 結(jié)構(gòu)的所有{},運(yùn)行后卻什么都不輸出。
請(qǐng)給代碼合適的位置補(bǔ)上 {} ,使程序能夠輸出“6”。
根據(jù) else 和 if 的配對(duì)原則推斷,第二個(gè) else 與第三個(gè) if 配對(duì),第一個(gè) else 與第二個(gè) if 配對(duì),第一個(gè) if 沒(méi)有與之配對(duì)的 else 。所以,當(dāng)?shù)谝粋€(gè) if 的條件為 false 時(shí),不會(huì)輸出任何內(nèi)容。
我們可以把第二個(gè) if 及其分支用 {} 括起來(lái),代碼片段如下:
if (x >= y) { if (x >= 5) Console.WriteLine("5"); } else if (y >= 6) Console.WriteLine("6"); else Console.WriteLine("7");
由于第二個(gè) if 進(jìn)入了 {} 里面,第一個(gè) else 不能與之配對(duì)(因?yàn)?else 不在那個(gè){}中),只好與第一個(gè) if 配對(duì),程序邏輯就發(fā)生了改變。
請(qǐng)驗(yàn)證,完成請(qǐng)求
由于請(qǐng)求次數(shù)過(guò)多,請(qǐng)先驗(yàn)證,完成再次請(qǐng)求
打開(kāi)微信掃碼自動(dòng)綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書(shū)簽
舉報(bào)