a、b交换

求最大值:

方案一:

int max = ((a + b)+ abs(a - b))/2

方案二:

int c =a - b;
char *strs[2] = {"a Large ", "b Large "};
c = unsigned(c) >> (sizeof(int) * 8 - 1);

a, b交换:

方案一:

a = a + b;
b = a - b;
a = a - b;

这样做如果a和b的值很大时,很容易出现溢出。

方案二:

a = a ^ b;
b = a ^ b;
a = a ^ b;

这样做的原理是按位异或运算,按位异或运算符号“^”是双目运算符,其功能是参与运算的梁书各对应的二进制位相异或,当对应的二进制位相异或时,结果为1.

原文地址:https://www.cnblogs.com/zhangzexdu/p/2984061.html