没有括号的宏让我很困惑
#include <stdio.h>
#define Inverse(A) -A
int main(void)
{
int x = 8;
int y = -Inverse(x+3);
printf("%d", y);
}
Inverse() 前面的一元否定运算符让我感到困惑。 我以为结果是 -逆(x+3) 会是 --x+3 即 10 (7+3)
如果我们扩展您的宏,我们会看到:
int main(void)
{
int x = 8;
int y = - -x+3;
printf("%d", y);
}
-
符号没有放在一起,因此它们不会被解析为预减运算符。两个一元 -
运算符抵消,因此输出为 11
。