卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章65623本站已运行420

像专业人士一样使用 XOR 在 C 中无需临时变量即可交换数字。

像专业人士一样使用 xor 在 c 中无需临时变量即可交换数字。

在不使用临时变量的情况下交换两个变量的值是一个经典的编程问题。在 C 语言中解决这个问题的一个优雅的解决方案是使用按位异或运算。

算法

考虑两个变量 a 和 b。目标是交换他们的价值观。

  1. 用要交换的值初始化a和b。

  2. 执行以下步骤:

    a^=b;
    b^=a;
    a^=b;
    

解释

让我们一步步分解算法:

  • a ^= b;:将 a 与 b 进行异或 (^=) 并将结果存储回 a 中。执行此操作后,a 包含 XOR b 的结果。

  • b ^= a;:将 b 与 a 的新值(b 的原始值)进行异或。经过此操作,b 包含 b XOR (a XOR b) 的结果,简化为 a.

  • a ^= b;:将 a 与 b 的新值(a 的原始值)进行异或。执行此操作后,a 包含 (a XOR b) XOR a 的结果,简化为 b.

现在,a 保存了 b 的原始值,b 保存了 a 的原始值,无需使用临时变量即可有效交换它们的值。

例子

考虑以下示例:

int a = 5,b = 7;
a^=b;
b^=a;
a^=b;
卓越飞翔博客
上一篇: 对 [T]csh 的修改
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏