题目
不用第三个变量交换两数(加减法)
思路
本题不用临时变量,用异或运算交换两整数(经典三行)。 a^=b; b^=a; a^=b; 可交换不同变量;若 a 与 b 是同一存储位置则失效,调用前须保证是两个变量。
解题分析
本题专门练异或交换。和临时变量、加减法一样,都能交换两整数,异或的约束是类型为整型且两变量地址不同。浮点、结构体请用临时变量。
若与第 5 题对照,建议同一组输入分别跑三种写法,看结果一致再理解差异。
完整程序
import java.io.*;
public class Main {
public static void main(String[] args) {
int a = 3, b = 7;
a ^= b; b ^= a; a ^= b;
System.out.println(a + " " + b);
}
}
运行示例
输出:
7 3