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つなので注意!!)
定数に代入はできないからね。
参考