二重ループを抜ける方法。
条件が当てはまったとき、二重ループを抜ける処理を書くのに悩んでしまった。
for(継続条件1){ for(継続条件2){ if(条件){ printf("true"); break; }else{ printf("false"); } } }
と書くと、内側のループは抜けるが、外側のループは抜けないので止まらない。
内側のループでbreakを呼んだ後、すぐさま外側のループを抜けるには・・・?
一般的にはフラグを使うのが正しいんだろうけど、私が考えた方法は、
for(継続条件1){ for(継続条件2){ if(条件){ printf("true"); 継続条件1を溢れさせる; break; }else{ printf("false"); } } }
これだと次の外側のループは回らないので、結果的に二重ループを抜けたことになる。
でも、さすがにこれには一同からひんしゅくを買ったw
力技にもほどがあるwww
ちなみにWikipeたんによると、
label: //外側のwhile文にラベルをつける for (継続条件1) { for (継続条件2) { if (条件) break label; } }
とすると、外側のループを抜けるらしい。break文にこんな書き方があったとは。
可読性が云々という話になると、どうかと思うけど。