题目

不用第三个变量交换两数(加减法)

思路

本题不用临时变量,用异或运算交换两整数(经典三行)。 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