对于整数值的所有范围,交换两个整数,而不使用第三个变量
本文关键字:整数 变量 三个 两个 于整数 范围 交换 | 更新日期: 2023-09-27 18:26:14
如何在不使用第三个变量的情况下交换2个整数,使其适用于所有整数范围。我知道,一般来说,我们遵循以下逻辑。
int a, b;
a = 10;
b = 30;
a = a + b;
b = a - b;
a = a - b;
但是,如果(a+b)给出的值大于整数范围,则此逻辑将失败。还有其他逻辑吗?
我相信您正在寻找XOR交换:
if (a != b) {
a ^= b;
b ^= a;
a ^= b;
}
您可以使用xor。。。
x ^= y;
y ^= x;
x ^= y;
来源与一个方便的现场演示。
int a=10;
int b=20;
a=a^b;
b=a^b;
a=a^b;
Console.WriteLine(a);
Console.WriteLine(b);