不用临时变量交换两个数

👁️ 34 人浏览 💬 0 人评论 ❤️ 添加收藏

异或有两个好用的性质:x ^ x == 0,x ^ 0 == x。于是 (a ^ b) ^ b 就变回了 a。靠它可以不用第三个变量交换两个数:

a ^= b;   /* a 存的是 a^b      */
b ^= a;   /* b = b ^ (a^b) = 原来的 a */
a ^= b;   /* a = (a^b) ^ 原来的 a = 原来的 b */

输入两个整数 a b,交换后输出。例如输入 6 3,输出:

3 6

程序第三步写错了一个字母。运行后看画布上每一步之后 a、b 各是多少,再改对。

代码里以 @youci 开头的 printf 只负责运行后在画布上显示中间值,不影响输出和判题,不用改。

提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论
🔒 登录并作答后可看讨论