问如何在不使用临时变量的情况下交换两个值?
答这是一个传统的、老套的汇编语言程序员的技巧,例如:
a ^= b; b ^= a; a ^= b;但这类代码在现代高级语言编程中几乎没有用武之地。临时变量几乎是免费的,而使用三个赋值的惯用代码,即
int t = a; a = b; b = t;不仅对人类读者来说更清晰,而且编译器更有可能识别并将其转化为最高效的代码(例如,甚至可能使用 EXCH 指令)。后者的代码显然也适用于指针和浮点数值,而 XOR 技巧则不行。另请参见问题 3.3b 和 10.3。
附加链接:进一步阅读