C、C++易错知识点杂记(2)


有两个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;

注:异或运算符特性:

  1. 交换律:a ^ b = b ^ a;
  2. 结合律:a ^ b ^ c = a ^ (b ^ c);
  3. a ^ a = 0;
  4. a ^ 0 = a;

你可能感兴趣的:(C++,c)