版权声明:Iori 的技术分享,所有内容均为本人原创,引用请注明出处,谢谢合作! https://blog.csdn.net/qq_31116753/article/details/82505861
这里给出常见的7种方法,仅供大家参考,部分实现C#不支持。
1、加减减法
private static void Swap1(ref int a, ref int b) {
a = a + b;
b = a - b;
a = a - b;
}
2、减减加法
private static void Swap2(ref int a, ref int b) {
a = b - a;
b = b - a;
a = b + a;
}
3、加减赋值法
private static void Swap3(ref int a, ref int b) {
//C#不支持此方法,C或C++可以
//a = a + b - (a = b);
}
4、加减减赋值法
private static void Swap4(ref int a, ref int b) {
//C#不支持逗号表达式,C或C++可以
//a = (a = a + b, b = a - b, a - b);
}
5、异或法
private static void Swap5(ref int a, ref int b) {
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
6、汇编法
__asm
{
mov eax,a;
mov ecx,b;
push dword ptr[eax];
push dword ptr[ecx];
pop dword ptr[eax];
pop dword ptr[ecx];
}
7、加乘赋值法
private static void Swap7(ref int a, ref int b) {
b = a + 0 * (a = b);
}
请注意:方法3、4、6,C#语言不支持。