这个输出为什么是105呢?
#include <stdio.h>#define fun(x) x*x
int main() {
int Result;
Result = fun(9+9)/fun(3+3);
printf("%d\n",Result);
return 0;
}
这个输出为什么是105呢? 本帖最后由 isdkz 于 2022-3-11 21:36 编辑
宏不是函数,它是预定义的规则,它不会得到结果再相除,
而是会直接代入表达式,9 + 9 * 9 + 9 / 3 + 3 * 3 + 3 = 105,
你想改变优先级的话可以改成这样:
#include <stdio.h>
#define fun(x) x*x
int main() {
int Result;
Result = (fun(9+9))/(fun(3+3)); // 注意这里
printf("%d\n",Result);
return 0;
}
或
#include <stdio.h>
#define fun(x) (x*x) // 注意这里
int main() {
int Result;
Result = fun(9+9)/fun(3+3);
printf("%d\n",Result);
return 0;
}
isdkz 发表于 2022-3-11 21:26
宏不是函数,它是预定义的规则,它不会得到结果再相除,
而是会直接代入表达式,9 + 9 * 9 + 9 / 3 + 3...
好的,谢谢
页:
[1]