首先你得明白,a++和++a的区别,a++是使用后加1而++a是先加1后使用,而这里是先调用宏,是1和2的比较,结果是假,就得到了c=b++,中比较之后,a,b都加了1,所以a=2,c=3,b=4应该是调用了2次b++得到的,你可以在调用宏后另外加e=b++,f=a++进去看下结果,应该就很容易看出来了
c=MAX(a++,b++);
c = ( (a++)>(b++) ? (a++) : (b++) )
【++ 在 后, 先使用 ++ 前的 值 然后再加】
故 1>2 为假
a变为2 ,b变为3
假取 b++的值 是b加前的值3,取出 加前的值3 给c,而后 b再加1变为4
故abc是分别是2,4,3
++/--运算符表示自增或自减1,其作用要看位置
如果放在变量之前,则在使用前先进行++/--运算,否则在使用后再进行自增(减)
如你写出的程序:c=MAX(a++,b++);
其实就是:
c=MAX(a,b);
a=a+1,b=b+1;
直接换掉就行了
c=((a++)>(b++)?(a++):(b++));