int a,b,max
方法1 if
if(a>b)
max=a;
else
max=b;
方法2 三目运算符?:
max=((a>b)?a:b)
方法3
max=((a+b)+abs(a-b))/2;
方法4 位运算
int sum=a+b;
b=b-a
a-=b*(b>>(sizeof(int)*8-1))
return sum-a;
解释:1 a>b时,b=b-a<0,且sizeof(int)*8-1=31(32位的情况下),则b>>(sizeof(int)*8-1)=-1,则a+=b*(b>>(sizeof(int)*8-1))为a-=-b为a=b, return sum-a为返回较大者。
2 a<b时,b=b-a>0,且sizeof(int)*8-1=31(32位的情况下),则b>>(sizeof(int)*8-1)=0,则a-=b*(b>>(sizeof(int)*8-1))为a-=0为a=a, return sum-a为返回较大者