请考虑以下代码:
#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;
}
这里应该按以下方式进行预处理:
- 首先将A替换为-B
- 然后将B替换为-C,从而形成表达式--C
- 然后将C替换为5,因此表达式结果是--5
所以,结果表达式应该会产生编译错误(lvalue错误)。 但正确答案是5,那输出如何是5呢?
请帮我解决这个问题。
A
替换为- - 5
,这会使5
被否定两次。 - Some programmer dude