什么';C代码中的宏定义有什么问题?

什么';C代码中的宏定义有什么问题?,c,C,在一次面试中,我被出示了密码。然而,我认为这是正确的。我也在我的电脑上尝试过这个方法。宏定义没有问题。但是,if条件需要解释 请注意以下两者之间的区别: #define TRUE 1 #define FALSE 0 void function(int var) { if(var == TRUE) { dosomething(); } } 1使条件为真,其他值使其为假 及 除0之外的每个值都使条件为真。只有0使其为假。宏定义没有任何错误。但是,if条件需要解释

在一次面试中,我被出示了密码。然而,我认为这是正确的。我也在我的电脑上尝试过这个方法。

宏定义没有问题。但是,
if
条件需要解释

请注意以下两者之间的区别:

#define TRUE 1
#define FALSE 0

void function(int var)
{
    if(var == TRUE) {
        dosomething();
    }
}
1
使条件为真,其他值使其为假


0
之外的每个值都使条件为真。只有
0
使其为假。

宏定义没有任何错误。但是,
if
条件需要解释

请注意以下两者之间的区别:

#define TRUE 1
#define FALSE 0

void function(int var)
{
    if(var == TRUE) {
        dosomething();
    }
}
1
使条件为真,其他值使其为假


0
之外的每个值都使条件为真。只有
0
使其为假。

对我来说,这里的宏定义是正确的。唯一可能有点“错误”的是没有使用
stdbool.h
中的定义。当
var
保存值
2
时会发生什么?这个代码有点撒谎。我唯一能想到的是
if(var==TRUE)
有点多余,
if(var)
也可以工作。但这并不在定义中。顺便说一句,面试中有很多“哪里不对劲”的问题,你可以“在你的电脑上试一试”,而且这些问题看起来很有效。关键在于你是否具备所需的经验和洞察力。所以不要假设“工作”代码是“正常”代码。实际上这里的定义是完全正确的。但是这里使用
TRUE
宏的方式值得怀疑。对我来说,这里的宏定义是正确的。唯一可能有点“错误”的是没有使用
stdbool.h
中的定义。当
var
保存值
2
时会发生什么?这个代码有点撒谎。我唯一能想到的是
if(var==TRUE)
有点多余,
if(var)
也可以工作。但这并不在定义中。顺便说一句,面试中有很多“哪里不对劲”的问题,你可以“在你的电脑上试一试”,而且这些问题看起来很有效。关键在于你是否具备所需的经验和洞察力。所以不要假设“工作”代码是“正常”代码。实际上这里的定义是完全正确的。但是这里使用
TRUE
宏的方式值得怀疑。确切地说,if(var)比使用任何if(var==TRUE)更自然。确切地说,if(var)比使用任何if(var==TRUE)更自然。
if (var)