#include<bits/stdc++.h>
#define MAX(A,B) (A>B)?A:B
using namespace std;
int main()
{
int i= 1, j=2;
int val1 = max(++i, ++j);
cout<<"i : "<<i<<" j : "<<j<<endl;
printf("Val2 : %d\n", val1);
int k = 1, l = 2;
int val2 = MAX(++k, ++l);
cout << "k : " << k << " l : " << l << endl;
printf("Val2 : %d\n", val2);
return 0;
}
以上代码的输出:
i:2 j:3
Val2:3
k:2 l:4
Val2:4
但我认为应该是:
i:2 j:3
Val2:3
k:2 l:3
Val2:3
有人可以简要说明一下吗?
答案 0 :(得分:1)
MAX在这里不是功能。如果它是一个函数,那么它将执行您期望的功能。但这是一个宏,而不是一个函数。因此,MAX(++k, ++l)
不等于++k; ++l; MAX(k, l)
,而是等于(++k>++l)?++k:++l
。