本文共 658 字,大约阅读时间需要 2 分钟。
转载原文地址:
平常swap(a,b)值交换,我们基本都是使用第一种方法,对于数学较好的人,可能会想到第二种方法,想到时,一定感觉很好,。对于汇编或对位有理解的人,可能会想到第三种方法,这个方法很妙。但,真正促使我写这篇文章的,还是第四种方法,妙,真的很妙,先(b = a),我是真没想到,我想,这么好的东西,尽管简单,但值得发表,以此共享。
void swap(int &a, int &b) { //方法一: int tmp = 0; tmp = b; b = a; a = tmp; //方法二: //a = a+b; //b = a-b; //a = a -b; //方法三: //a ^= b ^= a ^= b; //方法四: //a = a+b-(b=a); } int main(void) { int a = 3; int b = 4; printf("before swap: a = %d, b = %d\n", a, b); swap(a, b); printf("after swap: a = %d, b = %d\n", a, b); return 0; }
结果:
before swap: a = 3, b = 4 after swap: a = 4, b = 3