prev up next   top/contents search

comp.lang.c FAQ 列表· 问题 20.15c

如何在不使用临时变量的情况下交换两个值?


这是一个传统的、老套的汇编语言程序员的技巧,例如:

a ^= b;
b ^= a;
a ^= b;
但这类代码在现代高级语言编程中几乎没有用武之地。临时变量几乎是免费的,而使用三个赋值的惯用代码,即
	int t = a;
	a = b;
	b = t;
不仅对人类读者来说更清晰,而且编译器更有可能识别并将其转化为最高效的代码(例如,甚至可能使用 EXCH 指令)。后者的代码显然也适用于指针和浮点数值,而 XOR 技巧则不行。另请参见问题 3.3b10.3

附加链接:进一步阅读


prev up next   contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管