【发布时间】:2018-06-24 22:34:52
【问题描述】:
这个程序给出的输出是 5。但是在替换所有宏之后,它会得到--5。这应该会导致编译错误,试图减少5。但它编译并运行良好。
#include <stdio.h>
#define A -B
#define B -C
#define C 5
int main()
{
printf("The value of A is %d\n", A);
return 0;
}
为什么没有错误?
【问题讨论】:
-
那么
--5的数值是多少? -
预处理器不组合标记,因此(实际上)相邻的
-符号作为预处理的结果在它们之间有空格- - 5(注意空格)相当于-(-(5)),这给出5的结果。