宏未产生所需结果

Macros not producing required result

我是 C 的新手(之前来自 Python)。我对这部分代码感到困惑:

#include <stdio.h>
#define square(x) x*x
int main()
{
    int x = 36/square(6);
    printf("%d", x);
    return 0;
}

我不知道为什么 macro square(x) 没有产生输出 1,为什么它打印 36?你能解释一下吗?

您需要将宏括在括号中,如下所示:

#define square(x) (x*x)

按照您的写法,36/square(6) 扩展为 36/6*6,计算结果为 (36/6)*6,或 36。

加上括号,它会被正确计算为 36/(6*6),或 1.