宏定义中运算符与函数体中的运算顺序不同。
#define f1(a, b) a * b
#define f2(a, b) (a) * (b)
int main()
{
cout << f1(2 + 3, 2) << endl;
cout << f2(2 + 3, 2) << endl;
return 0;
}
结果:
8 10
f1(2 + 3, 2) 表示 2 + 3 * 2 = 8,而 f2(2 + 3, 2) 表示 (2 + 3) * (2) = 10 。



