a、b进行交换
第1题:不用if、?、switch、或其他判断语句,找出两个数中间比较大的
方案一:
1 int max = ((a+b) + abs(a-b)) / 2;
方案二:
1 int c = a-b; 2 char *strs[2] = {"a Large ","b Large "}; 3 c = unsigned(c) >> (sizeof(int) * 8 - 1);
(第二种不明白啊........)
第2题:将a、b的值进行交换,并且不实用中间变量;
方案一:
1 a = a+b; 2 b = a-b; 3 a = a-b;
注:本方案有个缺点,如果a、b都是比较大的两个数,a = a+b就会越界
方案二:
1 a = a^b; 2 b = a^b; 3 a = a^b;
无须担心越界问题.