LoginSignup
0
0

More than 5 years have passed since last update.

【C言語】if文についての考察

Last updated at Posted at 2017-12-18

OutLine

  • if()とは?
  • コンパイルエラーで見落としを無くす

if()とは?

C言語のif文において、if文の誤解 より、以下のような認識であると思います。

  if( 真または偽 ) {}

しかし、実際は、、、、

  if( 条件式 ){
    //else以外
  } else {
    //0である時
  }

です。

trueが実行される部分は、0以外になります。
つまり、1以上、-1以下になります。

※ただし、Java等はbooleanの判定になるため、マイナスは使用できません。

コンパイルエラーで見落としを無くす

ベテラン社員でも見落とすif文の書き方についてです。

 #define SENSOR_STATUS  1
 int StatusChange = 1;
 if(StatusChange = SENSOR_STATUS){
   //処理
 }

あれ?パッと見、合ってんじゃね?

間違ってますよぉぉぉ。
何が間違っているのか、それはイコール(=)が1つしか無いんです。
よくやる間違いなのですが、これ、コンパイルしても気づかないんですよねー。

推奨する書き方

 #define SENSOR_STATUS  1
 int StatusChange = 1;
 if(SENSOR_STATUS == StatusChange){
   //処理
 }

この書き方の場合、もし、イコール(=)が1つであったとしても、コンパイルエラーとなり、実行する前に気づくことができます。
(VBとかだと、イコール(=)が1つなので注意!!)
定数に代入はできないからね。

参考

0
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0