【发布时间】:2021-01-10 10:18:48
【问题描述】:
我编写了一个简单的代码来理解 C 中的预处理器指令:
#include <stdio.h>
int main(void)
{
int a;
printf("Enter any value : ");
scanf("%d", &a);
#if a
printf("The number you entered is non-zero.\n");
return 0;
#endif
printf("The number entered is zero.\n");
return 0;
}
输出如下:
当输入值为零时
Enter any value : 0
The number entered is zero.
当输入的值非零时
Enter any value : 5
The number entered is zero.
作为预处理器#if 检查下一个令牌。如果为零,则跳过代码,如果为非零,则正常执行代码。
但是这里的代码在这两种情况下都被跳过了。你能解释一下这里出了什么问题吗?
【问题讨论】:
-
这就是
if..else条件语句存在的原因。否则它会是多余的。
标签: c c-preprocessor