C:经典技巧,交换两个变量的值
十二月 30th, 2011 § 3 comments
40;
一般交换变量值都会这样做:
void swap(int* a, int* b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
——————————————————————————————————————-
下面是转帖 –>
下面这段代码的精妙就在于,它没有使用临时变量,并且相对于普通的方法不容易出错。
这是一个面试题的结果,题目是,请用一段代码交换两个整数的值。
x = x ^ y ;
y = x ^ y ;
x = x ^ y ;
与此相类似的还有一种方法,下面这段代码则是我自己想到的。
x = x + y ;
y = x – y ;
x = x – y ;
(操作符‘^’代表C/C++语言中的位运算符——异或)
然而,还有一种方法:下面这种更为优雅的写法和上面第一种写法是等价的:
x ^= y ^= x ^= y ;
——————————————————————————————————————-
转自:www.limou.net
感悟:
这种方法的优点在于不使用指针,指针具有危险性。这种方法简便没有危险性。
看得出来任何微小的地方都有创新,编程的时候要多思考。
转载于:https://www.cnblogs.com/ZzzZzz/archive/2011/12/30/2307921.html
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/110495.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...