我这个代码得出结果为什么不是8,而是7

来源:百度知道 编辑:UC知道 时间:2024/09/24 03:55:03
#include <iostream>
using namespace std;
#define max(a,b) ((a) > (b) ? (a) : (b))
void main()
{
int a = 5, b = 6;
int c = max(a++,b++);
cout<<c<<endl;
cin.get();
}

怎么可能是8
执行(a++)>(b++)?(a++):(b++)
先比较
a和b a=5 b=6 (a<b)
然后a=a+1 b=b+1 完了之后 a=6 b=7
之前a<b 执行后面的b++
就是c=b++
先调用b值 给c然后b=b+1
结果c=7
b=8
a=6

你把max(a++,b++)替换成(a++)>(b++)?(a++):(b++)就明白了
先运行a++,b++
这个时候b = 7
比较完大小后,返回b++

如果是引用专送的就是八了