考虑以下代码片段。
#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;
}
输出
The value of A is 5
但是这段代码本不应该编译通过,因为展开后它应该像这样:printf("The value of A is %d\n", --5);
,然后会提示编译错误,说需要lvalue
。难道不是这样吗?
--
绑定更强,只能应用于lvalue。否则,使用--
将是不可能的,因为它总是可以被解释为- -
。 - Amin Negm-Awad- -5
(注意空格)。运行预处理器并查看输出。 - Petr Skocik