作者yauhh (喲)
看板C_and_CPP
標題Re: [問題] 有關於巢狀If敘述
時間Fri Mar 18 22:31:38 2011
※ 引述《Cczr (洩洩歷啊)》之銘言:
: 現在我有一個巢狀if的code
: 我知道在迴圈裏面有break可以跳出迴圈
: 我的問題如下:
: 有沒有辦法在最外層的if內
: 只要有任何一個if不成立
: 則就會跳出整個敘述 (跳出最外層的if)
: 有這種語法嗎?
: 因選擇性敘述裡好像不能使用break
: 懇請高手賜教
: if((char)c == h)
: {
: c = reader.read();
: if((char) c == r)
: c = reader.read();
: else();
從你的碼看起來,你要的是程式先判斷 (c == h ?) 然後依序讀取並判斷是否為
r, e, f, a, b, 如果能讀到 b 就將 count + 1. 在 r-e-f-a- 過程中一不符合
判斷就要跳開.
由於有執行順序, 並且中途失敗就要中斷,可以利用 && 的 short-cut circuit
evaluation 特性,以及逗號的 sequence point 特性, (參考 Sequence Point
Wikipedia
http://en.wikipedia.org/wiki/Sequence_point ) 把程式寫成:
if ( (char)c == 'h' && (c = reader.read(), (char)c == 'r')
&& (c = reader.read(), (char)c == 'e')
&& (c = reader.read(), (char)c == 'f')
&& (c = reader.read(), (char)c == 'a')
&& (c = reader.read(), (char)c == 'b') )
{
count++;
}
最後講講 break. break 這個關鍵字無論如何只會跳出一層迴圈或離開一個 block
(後者只用在 switch 區塊). 所以你的需求沒有基本語法可支援.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.160.212.212
→ loveme00835:你跟 short circuit 是啥關係? XD 03/18 22:46
→ yauhh:&&有 short-cut circuit evaluation 的特性 03/18 22:48
→ yauhh:喔,我懂了. 因為我一直覺得這個特性很好用 03/18 22:49
推 ericinttu:先推這篇好了 XD 03/18 23:06
推 milkdragon:推這篇!! 03/19 00:31
推 tomap41017:推~ 03/19 17:26
→ xatier:推 03/20 15:49