📜  C |宏和预处理器|问题2

📅  最后修改于: 2021-05-29 12:56:04             🧑  作者: Mango

#include 
#if X == 3
    #define Y 3
#else
    #define Y 5
#endif
  
int main()
{
    printf("%d", Y);
    return 0;
}

上面程序的输出是什么?
(A) 3
(B) 5
(C) 3或5,取决于X的值
(D)编译时间错误答案: (B)
说明:乍一看,输出似乎是编译时错误,因为尚未定义宏X。在C语言中,如果未定义宏,则默认情况下,预处理器会为其分配0。因此,控制转到有条件的else部分,并打印5。请参阅下一个问题以获得更好的理解。

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。