-3
#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;
}

上述代码的输出:

我:2 j:3

VAL2 : 3

k : 2 l : 4

VAL2 : 4

但我认为应该是:

我:2 j:3

VAL2 : 3

k : 2 l : 3

VAL2 : 3

任何人都可以简单地澄清一下吗?

4

1 回答 1

1

这里的 MAX 不是函数。如果它是一个函数,那么它会做你期望它做的事情。但它是一个宏,而不是一个函数。所以MAX(++k, ++l)不等于++k; ++l; MAX(k, l)但等于(++k>++l)?++k:++l

于 2019-03-14T18:20:03.807 回答