我们已经讨论了在没有临时变量的情况下交换两个整数的不同方法。如何在不使用库函数的情况下交换单行?

Python:在Python中,有一个简单且语法简洁的构造来交换变量,我们只需要编写“x,y = y,x”。

C / C ++:下面是一个通常提供的经典解决方案

//使用按位异或交换(C / C ++中的错误解决方案)
x ^ = y ^ = x ^ = y;
上述解决方案在C / C ++中是错误的,因为它会导致未定义的行为(编译器可以以任何方式自由行事)。原因是,如果修改之间没有序列点,则在表达式中多次修改变量会导致未定义的行为。

但是,我们可以使用逗号来引入序列点。所以修改后的解决方案是

Java:在Java中,明确定义了子表达式评估的规则。左手操作数的右手操作之前,请务必评估(见本有详细介绍)。在Java中,表达式“x ^ = y ^ = x ^ = y;”根据Java规则不会产生正确的结果。它使x = 0.但是,我们可以使用“x = x ^ y ^(y = x);”注意表达式是从左到右计算的。如果最初x = 5且y = 10,则表达式等于“x = 5 ^ 10 ^(y = 5);”。需要注意的是,我们也不会在C使用/ C ++在C / C ++,它没有定义左操作数或右操作数是否为任何运营商(见执行此有详细介绍)

使用C / C ++,Python,PHP和Java在一行中交换两个变量-IDC帮帮忙 使用C / C ++,Python,PHP和Java在一行中交换两个变量-IDC帮帮忙 使用C / C ++,Python,PHP和Java在一行中交换两个变量-IDC帮帮忙 使用C / C ++,Python,PHP和Java在一行中交换两个变量-IDC帮帮忙

在IDE上运行
输出:

交换后的x和y值为10 5
替代解决方案:

C ++还提供了一个库函数swap()
b =(a + b) - (a = b); [感谢Rajat Mishra为此]
a + = b - (b = a); [感谢Zoran Davidovi?为了这]