不用任何比较判断语句,找出最大值?

刚才在CSDN看到了一个蛮有意思的算法题目:
有两个变量a和b,不用if、?:、switch或其他判断语句,找出两个数中比较大的那个?
大家给出了各种各样的答案,其中有几个我觉得很赞,
1)
int max=((a+b)+abs(a-b))/2 (这是给出的参考答案)
2)
int max(int a,int b)
{
int arr[]={a,b};
return arr[a
(我觉得这个确实很巧妙,确实)
突然意识到第二个使用了小于号。。。虽然想法不错 但是 违反规则了 Pass