标签: c#
如何在不使用第三个变量的情况下交换2个整数,使其适用于所有整数范围。 我知道通常我们会遵循以下逻辑。
int a, b; a = 10; b = 30; a = a + b; b = a - b; a = a - b;
但如果(a + b)给出的值大于整数范围,则此逻辑将失败。 还有其他逻辑吗?
答案 0 :(得分:2)
我相信你正在寻找XOR swap:
if (a != b) { a ^= b; b ^= a; a ^= b; }
答案 1 :(得分:1)
您可以使用xor ...
x ^= y; y ^= x; x ^= y;
Source有一个方便的现场演示。
答案 2 :(得分:1)
int a=10; int b=20; a=a^b; b=a^b; a=a^b; Console.WriteLine(a); Console.WriteLine(b);