为什么我在想25因为SQ(5)5 * 5
或13因为
SQ(2)= 4;
SQ(3)= 9;
可能是最终结果将是13(9 4)但惊讶地看到结果为11.结果如何成为11?
using namespace std; #define SQ(a) (a*a) int main() { int ans = SQ(2 + 3); cout << ans << endl; system("pause"); }
所以,这就是宏预处理器传递给编译器的原因:
SQ(2 3)扩展为(2 3 * 2 3)
所以,这真的是2 6 3 = 11.
你怎么能让它做你期望的?
>执行评估顺序.在宏定义或宏调用中使用().要么>写一个简单的功能来完成这项工作