对于整数值的所有范围,交换两个整数,而不使用第三个变量

本文关键字:整数 变量 三个 两个 于整数 范围 交换 | 更新日期: 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);