标题: 不用第三个变量交换2个值 [打印本页] 作者: Hugoo 时间: 2014-7-5 12:12 标题: 不用第三个变量交换2个值 public static void main(String[] args) {
int a = 10;
int b = 12;
a = b + (b = a) * 0; // 这句实现交换
System.out.println("a:" + a + " b:" + b);
}
对于这段代码片段:
int a = 1;
int b = 2;
a = b + (b = a) * 0;
如果将其转换为静态单赋值形式,并限制每个语句都是一个二元运算与一个赋值,就变成:
int a0 = 1;
int b0 = 2;
int b1 = a; // (b = a)
int temp1 = b1 * 0; // (b = a) * 0
int a1 = b0 + temp1; // b + (b = a) * 0