panzerQ
光坂国中生
光坂国中生
  • 注册日期2026-03-15
  • 最后登录2026-03-20
  • 生日2004-1-1
  • 光玉10颗
阅读:10回复:0

[转载]高级语言编程,不宜用异或交换两个int型变量的值

楼主#
更多 发布于:2026-03-20 21:23
这么做确实能达到目的:
Input(int a, int b)
a := a ^ b   // 第一步:a 保存 a^b
b := a ^ b   // 第二步:b = (a^b)^b = a
a := a ^ b   // 第三步:a = (a^b)^a = b

但根据早些时候老资历的测评,在桌面平台上,
这种写法往往不会带来时空开销的减小:
用异或来交换两个变量是错误的_用异或来交换两个变量会更快吗-CSDN博客

也可以看下面这个转载:
【转】用异或来交换两个变量是错误的 - Kimi_Lee - 博客园

偏好CISC的Intel还弄出了XCHG系汇编指令(真实存在于IA-32指令集),
专门处理 寄存器-寄存器 值交换的需求,感兴趣者可自行查询相关资料。
喜欢0 评分0
游客

返回顶部