2017-12-07 13 views
1
#define TRUE 1 
#define FALSE 0 

void function(int var) 
{ 
    if(var == TRUE) { 
     dosomething(); 
    } 
} 

インタビュー中に、コードが表示されました。しかし、私はそれが正しいと思います。そして私は自分のコンピュータでこれを試してみる。Cコードのマクロ定義に何が問題なのですか?

+4

私の場合、ここのマクロ定義は正しいです。多少「間違っている」唯一のことは、 'stdbool.h 'の定義を使用しないことです。 –

+9

'var'が値' 2'を保持するとどうなりますか?このコードはちょっと嘘です。 – StoryTeller

+2

私が考えることができるのは、 'if(var == TRUE)'は少し冗長で、 'if(var)'も同様に機能するということだけです。しかし、それは定義ではありません – Steve

答えて

4

マクロ定義に問題はありません。ただし、条件は説明が必要です。

注意違い:

if (var == TRUE) 

1は、条件が真なり、他のすべての値は、それは偽になります。

if (var) 

0を除くすべての値は、条件が真なります。 0のみがfalseになります。

+0

(var)がif(var == TRUE)を使用するより自然な場合は、まさに、です。 – Howo

関連する問題