- ベストアンサー
C言語のお作法 - ”{”の使い方
- C言語の中で、'{ }'の使い方について疑問があります。
- 具体的には、if文とswitch文での'{ }'の使い方の違いについて教えてください。
- ハッシュタグ: #C言語 #制御構文 #if文 #switch文
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
とりあえず C# の話をすると, if は「1つの文を制御する」ことになっているので, 「処理1」や「処理2」が 1つの文であれば if (条件) 処理1 else 処理2 と書くこともできます. ところが, それぞれの処理が複数の文からなるときにはこのように書けない (else がどこまで影響するかわからない) ので, 「複数の文を {~} でくくると『それ全体』が 1つの文となる」という機構と組み合わせて if (条件) { 処理1-a 処理1-b } else 処理2 のように書きます. 一方 switch では「与えられた式を計算し, その結果と一致する caseラベルがあればそこへ飛ぶ」ということになっているので, case ごとに {~} を必要としません. caseラベルはあくまで「飛び先の指定」に使うだけです. ちなみに「次のcaseまでがそのcase内」というのは一応その通りですが>#3, 文法上「そのあとに零れ落ちない」ようにすることが (ECMA-334 では) 必須. C/C++ とは switch の仕様が違うことに注意.
その他の回答 (4)
私はcase の後もブロックスコープでくくります。 分かりやすいからです。 まぁそれ以前にswitch 文は使わないようにしています。 なんでswitch 文なんて残ってるんでしょうね!
お礼
ご回答ありがとうございます。if文を使う方が良いのでしょうかね。
- Hirorin_20
- ベストアンサー率20% (136/648)
開始、終了のマークです。 if文など終了マークがなければどこまでがif内なのか解らなくなります。 case文は次のcaseまでがそのcase内なので解ります。 ちなみに"Hello Word!"からはじまるのは教科書がそうだからです。 C言語の教科書と言われる『プログラミング言語C』(カーニハンとリッチー著)の最初のコードが"hello, world"と出力するものです。
お礼
ご回答ありがとうございます。
- jjk65536
- ベストアンサー率59% (66/111)
> ”{” はどのような意味があるのか、の説明が見つからず困っています。 もちろんそういうルールだから、なのですが、例えばifであれば{}がないと どこまでがifの適用範囲か明確に表現できません。 一方で、caseはラベルとして扱われるので、どこまでって考え方は不要です。 case 値1: case 値2: 処理 こういう書き方だってOKですし。 ですから、ifでは複数行の処理に{}が必要で、caseでは不要です。 それとは別で、{}にはスコープを制御するという重要な役割があります。 auto変数の生存範囲を限定することで、バグを減らしたりコードの見通しを 良くする効果が見込めます。 詳しくは、Wikipediaのここを見ると分かりやすいと思います。 http://ja.wikipedia.org/wiki/%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0) C#でも同じルールですので、しっかり覚えましょう。
お礼
ご回答ありがとうございます。
- OKWavex
- ベストアンサー率22% (1222/5383)
そーゆーきまりだから
お礼
ご回答ありがとうございます。何となくわかりました。