【发布时间】:2016-05-04 12:28:24
【问题描述】:
假设我们有这个表达式:
#define cube(x) x * x * x
然后我们称之为:
int n = 3, v;
v = cube(n + 1); // v = 10
v = cube((n + 1)); // v = 64
v = cube(n); // v = 27
那么问题来了:为什么第一次操作不做v = 64?
【问题讨论】:
-
阅读运算符优先级。手动展开 MACRO 并检查。
-
这必须是重复的...
-
@chqrlie 我怀疑是这样,但我找不到类似的东西。
-
这里是one。当然它谈到了 C++,因为你有替换宏的机制。但陷阱是一样的。
标签: c++