Re: [問題] 有關於巢狀If敘述
※ 引述《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
→
03/18 22:46, , 1F
03/18 22:46, 1F
→
03/18 22:48, , 2F
03/18 22:48, 2F
→
03/18 22:49, , 3F
03/18 22:49, 3F
推
03/18 23:06, , 4F
03/18 23:06, 4F
推
03/19 00:31, , 5F
03/19 00:31, 5F
推
03/19 17:26, , 6F
03/19 17:26, 6F
→
03/20 15:49, , 7F
03/20 15:49, 7F
討論串 (同標題文章)