「while(0)」の使い道
※2/21 数発言追加
- ■ mikotox
- whileとbreakを使ってみた給与計算ぷろぐらみゅ http://post.ly/JU
- ■ mikotox
- 試してみた。できたはず?
- ■ s_hiiragi
- @mikotox 変わったwhileの無限ループ条件ですね。while(1)と書くだけでちゃんと無限ループしてくれますよ〜
- ■ mikotox [Re]
- @s_hiiragi なんかwhile(0)は絶対書いちゃだめだよ!って言われて何か抵抗があった!すみません
- ■ cielo_ee
- @mikotox あとwhile(0)がダメっていうのは絶対にループの中にいかなくなっちゃうからで、while(1)は適切にループを抜けるようにすれば使ってOK。いろいろうるさくて失礼。
- ■ s_hiiragi
- @mikotox 0とか1とか数字は、while()の括弧の中では真偽値(簡単に言えば、YES or NO)に変換されます。0が偽(NO)で、それ以外が真(YES)です。なので、while(0)はいきなりループすることをNO!といってることになります。
- ■ mikotox [Re]
- @cielo_ee while(0)と(1)はちがうのね。いろいろ認識とお勉強がたりなくてすみませぬ。
- ■ Misho
- だれか while(0){ ほげほげ } な構文に意味を与えてあげて下さい。寂しそうにこちらを見ています!!!! in '09
- ■ Misho
- だれか!!!誰か早く while(0) に利用価値を!!!!!! in '09
- ■ Misho
- do { ... } while(0)ってそれ書かなくて良いじゃん in '09
- ■ chap_py
- @Misho 実際問題利用価値はあって、ライントレース系のシステムはWhile(0)を使って無限ループを入れてる。敢えて無限ループを入れて、線が見つかった時点で電気的に回路を切断して、無限ループから抜け出してまた線を追うとか言うシステムの組みかたをしていると聞いた事がある
- ■ Misho [Re]
- @chap_py 完結に5文字以内でお願いします。 in '09
- ■ kanasan
- @Misho 途中にbreakで処理抜け可能。
- ■ Misho [Re]
- @chap_py って先生それ多分while(1)です in '09
- ■ tackman [Re]
- @Misho コメントアウトの代わりに使ってみるとか。
- ■ harukasan
- ん、do { ... } while(0) ってただスコープ変えたいだけじゃないの?
- ■ chap_py
- @Misho 無 理 ポ ! !
- ■ chap_py
- @Misho ホントだwwwwwwwww
- ■ ka_
- いやマジで while(0) なんてどうやって使うんだべ [EeePC901]
- ■ Misho
- あの@kanasanまでもがwhile(1)と見間違えるなんて……while(0)……恐ろしい娘……。。。。 in '09
- ■ Misho [Re]
- @harukasan お!スコープが変わるのですか!? in '09
- ■ kanasan
- @Misho do {...if(...){break;}...if(...){break;}...} while(0)
- ■ ka_
- スコープ変えたいだけなら { ... } でイナフ (ノω<) [EeePC901]
- ■ Misho [Re]
- @tackman 確かにそういわれてみれば!!! 間に * とか / とかいっぱいあるとき便利ですね!!! in '09
- ■ Misho [Re]
- @kanasan おおおおおおおおおおおおおおおおおおおおおおおおお in '09
- ■ Misho
- すげえええええええええええええええええええええええ in '09
- ■ Misho
- 横浜市から神が降臨した in '09
- ■ kanasan
- @Misho while(0)ですぜ。
- ■ ka_
- /* */ の入れ子を無視した一括コメントアウトなら #if 0 ... #endif でイナフだしねぇ〜 (´ω`) [EeePC901] .
- ■ Misho
- 感動して言葉が出ない in '09
- ■ harukasan
- @Misho んー、これとかですね。 http://tinyurl.com/blbl2z
- ■ kanasan
- @Misho while(0){}なら利用価値なしと思いきや、実は利用価値あり。下手にコメントアウトした処理がコンパイル通らない処理に書き変えてしまわないように、while(0){...}でコメントアウトのかわり。
- ■ Misho [Re]
- @ka_ #if 0 ... #endif を入れ子にしたくなったらどうしましょう in '09
- ■ Misho
- かなさんがすごすgるう in '09
- ■ harukasan
- マクロに使うかコメントアウトくらいかなー。使い道。
- ■ kanasan
- while(0){}内はコンパイル処理されるけど、実行されない。jsでもsyntaxのチェックぐらいは可能。
- ■ ka_ [Re]
- @Misho そう言われると弱い (^^; [EeePC901]
- ■ Misho
- 【結論】寂しそうにしていたwhile(0)に,3つも利用価値を見いだすことが出来ました!!!さすがTwitterです!! in '09
- ■ Misho
- (1) do{ } while(0); の途中に break; を配置して,途中で離脱できるブロックを組み立てる。 in '09
- ■ Misho
- (2) *や/が多い文章も安心!!無限入れ子構造的コメントアウト!!! in '09
- ■ Misho
- (3) while(0){ }で囲った文章は実行されないけどコンパイルされるので,コメントアウトされたコードの文法的正しさを維持できる!! in '09
- ■ ka_
- でも while(0) { ... } de [EeePC901]
- ■ hatsune_
- @Misho do { } while(0)だったら{ }の中は1回しか通らないけどいいの? do { } until(0)とか do { } while(1)じゃなくて? *imoTwit
- ■ Misho [Re]
- @hatsune_ どうやら goto の代わりに使うみたいです。 in '09
- ■ ka_
- でも while (0) { ... } でコメントアウト出来る範囲は同一スコープ限定なのがネック? [EeePC901]
- ■ hatsune_
- @Misho do {}構造にしておいてbreak文で}の後ろにブレイクか! *imoTwit
- ■ harukasan
- @Misho あと #define MACRO do { ... } while(0) ってマクロで使ったりしますよっ。
- ■ Misho
- @mikotox Twitterのとても偉い人たちに尋ねた結果,全く使い道の無さそうなwhile(0)にも,3つもの利用法があることがわかりました!!!プロになったら使っても良いみたい!!! in '09
- ■ Misho [Re]
- @hatsune_ そうです!!何という鬼畜攻め!!!!!! in '09
- ■ Misho [Re]
- @harukasan お?それはスコープを限定するという意味ですか?それとも,ブロックにしないと #define できないのだっけ in '09
- ■ harukasan
- @Misho さっきも貼ったのですが http://tinyurl.com/blbl2z
- ■ Misho
- @harukasan これは!!!!!!!!! in '09
- ■ Misho
- というかこのwhile(0)によるブロック化はhackすぎるだろ…… in '09
- ■ kanasan
- @Misho breakなしのswitchとは逆用途。
- ■ harukasan
- 基本的にwhile(0)使うのはバッドノウハウっぽいよね。
- ■ harukasan
- Spotlightでwhile(0)検索してみたら何カ所か使ってた。