玩玩小技巧(1)_三种方法不使用临时变量交换两个数的值
2011-10-06 17:35
375 查看
先贴出代码,实现代码使用C#。语言无关性,道理都一样。
int a = 3, b = 4; //function 1 a = a + b; b = a - b; a = a - b; Console.WriteLine(a);//4 Console.WriteLine(b);//3 //function 2 a = a ^ b; b = b ^ a; a = a ^ b; Console.WriteLine(a);//3 Console.WriteLine(b);//4 //function 3 b = a + (a = b) * 0; Console.WriteLine(a);//4 Console.WriteLine(b);//3
第三种方法:
0000003a mov dword ptr [ebp-40h],14h 00000041 mov dword ptr [ebp-44h],0Ah low = high + (high = low) * 0的反汇编是这样的: 00000048 mov eax,dword ptr [ebp-40h] 0000004b mov dword ptr [ebp-48h],eax //这里是第三个变量地址 0000004e mov eax,dword ptr [ebp-44h] 00000051 mov dword ptr [ebp-40h],eax 00000054 mov eax,dword ptr [ebp-48h] 00000057 mov dword ptr [ebp-44h],eax
相关文章推荐
- 交换两个数不使用临时变量的陷阱
- 《面向对象程序设计与VC++实现》--Liwei_1_3 (交换 使用引用、指针、变量三种方法)
- 使用异或运算 不借助临时变量交换两个数
- 不使用临时变量 交换两个数
- 交换两个数的值以及不使用临时变量交换两个数的值
- 不使用临时变量交换两个数
- 不使用第三方变量交换两个变量值的三种方法
- 不用临时的变量 交换两个数的两种方法
- C/C++/Java不使用临时变量实现两个数的交换
- 不使用临时变量交换两个数的值
- 交换两个数的值以及不使用临时变量交换两个数的值
- C语言 不使用临时变量交换两个数
- 不使用临时变量 交换两个数的值
- 不用临时的变量 交换两个数的两种方法
- 不使用第三方变量,按位操作最快的交换两个数的方法
- C中不使用临时变量交换两个变量的值
- 无临时变量交换两变量值的方法缺陷与改进
- 不使用临时变量交换两个变量的值(异或,加减,乘除)
- [python]面试题:交换两数且不使用临时变量
- 交换变量的方法,不使用第3变量