有两个int型变量a和b,不用“if”,“swith”,“?:”或其它判断语句找出a,b中较大的。
int max = (a + b + abs (a - b))/2
不用中间变量,交换int型变量a和b的值
- 方案一
a = a + b;
b = a - b;
a = a - b;
- 方案二
a = a ^ b;
b = a ^ b;
a = a ^ b;
注:异或运算符特性:
- 交换律:a ^ b = b ^ a;
- 结合律:a ^ b ^ c = a ^ (b ^ c);
- a ^ a = 0;
- a ^ 0 = a;