宏未产生所需结果
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.
我是 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.