if文の処理部分の括弧を省略した場合の書き方

このQ&Aのポイント
  • C言語のif文の書き方についてですが、括弧を省略した場合、誤った動作をする可能性があります。
  • 括弧を省略した場合、次のif文の処理部分は正常に動作しない場合があります。
  • コンパイラはエラーを出さないことがありますが、括弧を使用することを推奨します。
回答を見る
  • ベストアンサー

if文の処理部分の括弧を省略した場合の書き方

C言語のif文の書き方についてですが、通常 if(条件) { ---処理1------- } else if(条件) { ---処理2------- } else { ----処理3------ } 括弧を使った場合は上のような動作をすると思うのですが、括弧を使った場合、 次のif文の”処理1”部分if((TEST_SENSOR & 0x03) == 0x03)は正常に動作できますでしょうか? コメント文が1行入ってしまうとダメでしょうか? コンパイラはエラーは出しませんでした。 if((TEST_SENSOR & 0x03) == 0x03) //return TEST_ERR; return T_NONE; else if((SENSOR & 0x03) == 0x01) return T_LOCK; else if((TEST_SENSOR & 0x03) == 0x02) return T_UNLOCK; return T_ERR; どうぞ、ご教授頂きますよう、お願い致します。

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

  • ベストアンサー
回答No.1

コメントは翻訳フェーズ3で一つの空白文字に置き換えられます。 それに対し,if文は翻訳フェーズ7で処理されます。 # ISO/IEC 9899:1999 5.1.1.2 Translation phases 段落1 なので,コメントはあっても無くても一緒の意味になります。 そもそも,Cにおいて「行」が関係するのは ・//コメント ・前処理指令 ・文字列リテラル くらいです。 # 行連結文字は翻訳フェーズ2だから,上記は全て行連結文字の影響を受けます。

diy_sunny
質問者

お礼

回答いただきありがとうございます。現在のif分でも問題ないことがわかり、助かりました。やはりC言語の詳細な取り決めがあるのですね。

その他の回答 (1)

  • hidebun
  • ベストアンサー率50% (92/181)
回答No.2

>正常に動作できますでしょうか? これに関しては、#1さんが的確に回答されているので、解決済みということで。 職業プログラマは、おそらく「中括弧を省略するな」と教育されていると思います。 質問者が感じた不安は、コードの不安定さを示しています。 return T_NONE; の部分を、デバッグ等の為に、 printf("Code=%d\n", T_NONE); return T_NONE; と変更されたら、意図通り動かなくなります。 不安な要素は、必ず将来表面化し、トラブルとなって質問者に返ってくるでしょう。 その時に後悔しないように、素直に中括弧を付けるようにしましょう。

関連するQ&A

  • IF文

    (A)IF 条件 THEN 単純実行文1 ELSE 単純実行文2 (B)IF 条件 THEN 実行処理1 ELSE 実行処理2 Aの文では単純実行分なのになぜ改行すると(B)の文みたいに実行処理になるのでしょうか? 実行処理と単純実行文の違いを教えてください

  • サブルーチンやif分以外での中括弧

    perlについて学習中で、現在フリーのスクリプトを見て勉強しております。 中括弧の使い方を教えて欲しいです。 sub test { print"OK"; } if ($test>1) { print"OK"; }else{ print"NG";} 上記のようにサブルーチンやif文での使い方は分かるのですが、フリーのスクリプトの中に単に中括弧を使用している部分がありました。 例) { ←この括弧    my(@new);    for(0..3){if($tmp[$_]=~/jpg/){push(@new,$tmp[$_]);}} } 矢印の部分の部分の括弧ですが、これはどのような意味があるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Perl
  • pythonのif for文の処理を複数行書きたい

    C言語などはfor if文を使うとき if(条件式){ 処理 } for(条件式){ 処理 } など中括弧を使いますが、 pythonはカッコを使わず for 条件式: 処理 などと、中括弧を使いません。 しかし for 条件式: 処理1、 処理2, 処理3… などと言った処理を書くと、処理1だけがループされ、 if 条件式: 処理1、 処理2, 処理3… だと、処理1だけがifの対象になりますよね 処理1,2,3すべてがforやifの対象になるにはどういう書き方をすればいいんでしょうか。 「for if 複数行処理」などで検索しても、or andなど複数条件などがヒットして中々探せません

  • 少数を比べて処理をさせるif文について

    質問させていただきます。 今、if文で条件を書きたいと思っています。 その条件とは、例えばxの小数とyの小数を見た場合、xの小数がyの小数以上ならば処理をさせたいと思っているのですが、どのようにすればその条件を書けるか教えていただけないでしょうか? x = 1.9 y = 0.8 この場合、xの小数は.9でyの小数は.8なのでxの小数はyの小数より大きいので処理をさせたいと思っています。 よろしくお願いします。

  • If文の条件文の書き方

    お世話になります。 Excelでマクロを作成しております。 内容:  あるセルに、X<=300 というような条件を入れておきます。  ある値、たとえば、500 が来たときに、Xに代入して、  500<=300 という条件式を作り、それが、正しいか、正しくないか  の結果を求めたいと思っています。 このとき、if文の条件文は、値によって、変わらなくてはいけないので、 文字列の置き換え等をして、変数として条件文を作ると、「型が違います」 のエラーになります。 どのように条件文を作ればいいでしょうか?? hani = Cells(1,1).value 'セル1,1に、X<=300 が書かれています。 exp = Replace(hani, "X", 500) '"X"を500と置き換えます。 If exp Then Check = 0 Else Check = 1 End If よろしくお願いします。

  • if文の使い方について

    if文でaの値とbの値とcの値が一緒なら次の処理を行うものを作成したいのですが。 if($a==$b==$c){ 行いたい処理 }else{ その他の処理 } と書いたのですが、ダメで if($a=$b=$c){ 行いたい処理 }else{ その他の処理 } と書いたのですが、これもダメでした。 if($a==$b) {  if($b==$c)  {    処理   }else{     その他の処理   } }else{ その他の処理 } と書かいたら実行されたのですが、このように分けて書かないとダメなのですか? いいやり方がありましたら教えてください

    • ベストアンサー
    • PHP
  • if文の中の処理

    if(paramA > 300){・・・条件1 if(paramB){・・・条件2 if(paramA > 999){・・・条件3 プログラム終了 } }else if(paramA > 600){・・・条件4 プログラム終了 } } 上記のプログラムで、条件1・3・4の場合は 正常に動作するのですが、 条件2の箇所でparamの中にParamBがあり、尚且つ、条件3に当てはまらない場合はプログラムが続くように組んでみたのですが 正常に動作してくれません。 この場合は、条件2がまずいのでしょうか? よろしくお願いいたします。

  • VBA の if 文の質問です

    下記のようなif文を実行したのですが Or のあとの条件が無視されてしまっているようなのですが、このような書き方ではだめなのでしょうか? else if で地道に分岐させたほうがいいのでしょうか? If Cells(1, 1).Value <> "" Or Cells(1, 2).Value <> "test" Or Cells(1,3) <> 0 Then 処理内容 End If

  • if文が上手くいかない・・・

     連続投稿失礼します。  if文が上手くいきません。$hensuuの値が間違っているのにもかかわらず、条件があっている時の処理が実行されてしまいます。  なにやら癖になっているようで、if文を書くたびこのような事態が発生します。(PHPに限らず、C言語でまで・・・。)一体何が原因なのでしょうか? <?php $hensuu = "right"; if($hensuu = "wrong"){ print <<<_EOT_ 条件に合ってないはずなのに、こっちが表示されちゃう。 _EOT_; } else { print <<<_DRK_ 本来こっちが表示されるはずなのに、表示されない・・・。 _DRK_; } ?>  よろしくお願いします。

    • ベストアンサー
    • PHP
  • if文の書き方

    if文の書き方 if(!$a){$b=1;}の内容で、条件を右に持ってくる書き方だと$b=1 if(!$a);だと思いますが、 if(!$a){$b=1;}else{$b=2;}の内容で、条件を右に持ってくる書き方はできないでしょうか?

    • ベストアンサー
    • Perl

専門家に質問してみよう