C语言问题
#define EVEN(x)x%2==0?1:0
main( )
{
if(EVEN(9+1)) printf(〃is even〃);
else printf(〃is odd〃);
}
运行结果为is odd
这是为什么呢?
可以详细说说#define EVEN(x)x%2==0?1:0 的意思是什么吗?
参考答案:#define EVEN(x)x%2==0?1:0
是带参数的宏,
在预编译的时候,预编译器会把EVEN(x)替换为x%2==0?1:0
本程序中是替换为9+1%2==0?1:0
9+1%2==0?1:0的值是0,
所以执行else.
如果你写成#define EVEN(x)(x)%2==0?1:0
就会得到is even
我猜这可能是你要的结果
如果还有问题可以给我发消息