|
阅读:10回复:0
[转载]高级语言编程,不宜用异或交换两个int型变量的值
这么做确实能达到目的:
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指令集), 专门处理 寄存器-寄存器 值交换的需求,感兴趣者可自行查询相关资料。 |
|