今天,在公司里突然想到的一个问题,如何只使用一条语句交换两个元素的值。上代码:
public class Main {
public static void main(String[] args) {
int a = 5, b = 10;
a = (a != b ? a^b^a : 1) ^ (a != b ? a^b^b : 1) ^ (a != b ? b = a^b^b : 1);
System.out.println(a + " " + b);
}
}
经大量测试:上面这行代码完全可以做到。 还有其他的方法是利用编译器的漏洞去交换,例如:
b=a-(a=b)+a;
在Java环境中也可以做到,但是如果用C的编译器去执行,就会不成功!
这些有待大家去证明、实践!