当我在 Linux 上执行以下代码时,输出是 32。为什么会这样?
#include <stdio.h>
#define m 10+2
int main() {
int i;
i = m * m;
printf("%d", i);
return 0;
}
最佳答案
宏扩展不注意周围的语法,因此 i=m*m
扩展为 i=10+2*10+2
,而不是 i=(10+2)*(10+2)
。这就是为什么人们应该总是将宏定义和参数放在括号中:
#define m (10+2)
关于c - m是一个定义为10+2的宏;为什么 m*m 的计算结果为 32?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27301571/