• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語のお作法 - ”{”の使い方)

C言語のお作法 - ”{”の使い方

このQ&Aのポイント
  • C言語の中で、'{ }'の使い方について疑問があります。
  • 具体的には、if文とswitch文での'{ }'の使い方の違いについて教えてください。
  • ハッシュタグ: #C言語 #制御構文 #if文 #switch文

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

とりあえず 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 の仕様が違うことに注意.

AndYouAndI
質問者

お礼

ご回答ありがとうございます。何となくわかりました。

その他の回答 (4)

noname#148582
noname#148582
回答No.5

私はcase の後もブロックスコープでくくります。 分かりやすいからです。 まぁそれ以前にswitch 文は使わないようにしています。 なんでswitch 文なんて残ってるんでしょうね!

AndYouAndI
質問者

お礼

ご回答ありがとうございます。if文を使う方が良いのでしょうかね。

回答No.3

開始、終了のマークです。 if文など終了マークがなければどこまでがif内なのか解らなくなります。 case文は次のcaseまでがそのcase内なので解ります。 ちなみに"Hello Word!"からはじまるのは教科書がそうだからです。 C言語の教科書と言われる『プログラミング言語C』(カーニハンとリッチー著)の最初のコードが"hello, world"と出力するものです。

AndYouAndI
質問者

お礼

ご回答ありがとうございます。

  • jjk65536
  • ベストアンサー率59% (66/111)
回答No.2

>  ”{” はどのような意味があるのか、の説明が見つからず困っています。 もちろんそういうルールだから、なのですが、例えば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#でも同じルールですので、しっかり覚えましょう。

AndYouAndI
質問者

お礼

ご回答ありがとうございます。

  • OKWavex
  • ベストアンサー率22% (1222/5383)
回答No.1

そーゆーきまりだから