Re: [問題] 有關於巢狀If敘述

看板C_and_CPP作者 (喲)時間13年前 (2011/03/18 22:31), 編輯推噓3(304)
留言7則, 6人參與, 最新討論串4/6 (看更多)
※ 引述《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
你跟 short circuit 是啥關係? XD
03/18 22:46, 1F

03/18 22:48, , 2F
&&有 short-cut circuit evaluation 的特性
03/18 22:48, 2F

03/18 22:49, , 3F
喔,我懂了. 因為我一直覺得這個特性很好用
03/18 22:49, 3F

03/18 23:06, , 4F
先推這篇好了 XD
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
文章代碼(AID): #1DWspDBa (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1DWspDBa (C_and_CPP)