在c中输出以下代码宏

Rag*_*rma 0 c macros

对于以下代码,我得到输出as-Geeks.

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

解释这种输出的原因.

小智 5

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