電子書籍の厳選無料作品が豊富!

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;


どうぞ、ご教授頂きますよう、お願い致します。

A 回答 (2件)

コメントは翻訳フェーズ3で一つの空白文字に置き換えられます。


それに対し,if文は翻訳フェーズ7で処理されます。
# ISO/IEC 9899:1999 5.1.1.2 Translation phases 段落1

なので,コメントはあっても無くても一緒の意味になります。
そもそも,Cにおいて「行」が関係するのは
・//コメント
・前処理指令
・文字列リテラル
くらいです。
# 行連結文字は翻訳フェーズ2だから,上記は全て行連結文字の影響を受けます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/06/21 09:49

>正常に動作できますでしょうか?


これに関しては、#1さんが的確に回答されているので、解決済みということで。

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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!