对于以下代码,我输出为Geeks。
#include <stdio.h>
#define ISEQUAL(X, Y) X == Y
int main()
{
#if ISEQUAL(X, 0)
printf("Geeks");
#else
printf("Quiz");
#endif
return 0;
}
解释输出的原因。
答案 0 :(得分:5)
条件宏#if ISEQUAL(X, 0)
已扩展为#if X == 0
。预处理结束后,所有未定义的宏都使用默认值0
进行初始化。由于尚未定义宏X
,因此会使用0
对其进行初始化。所以,打印出“极客”。