在c中输出以下代码宏

时间:2015-06-27 20:16:59

标签: c macros

对于以下代码,我输出为Geeks。

#include <stdio.h>
#define ISEQUAL(X, Y) X == Y
int main()
{
    #if ISEQUAL(X, 0)
        printf("Geeks");
    #else
        printf("Quiz");
    #endif
    return 0;
}

解释输出的原因。

1 个答案:

答案 0 :(得分:5)

条件宏#if ISEQUAL(X, 0)已扩展为#if X == 0。预处理结束后,所有未定义的宏都使用默认值0进行初始化。由于尚未定义宏X,因此会使用0对其进行初始化。所以,打印出“极客”。

相关问题