2013-10-05 48 views
-3

比方说,我有变量保持3和另一个保持5.我需要切换他们的值没有另一个变量。我该怎么做?如何交换两个整数

+4

为什么你需要做的不使用单独的变量?除了编写令人费解的代码之外,我看不出任何其他原因。这绝对不是现实世界的问题。 –

+0

**如何**不能做?问Yoda。顺便说一句,谷歌,甚至是在旧的普通Wikipeadia中的搜索结果都会让你得到一个很好的,彻底的答案...... – ppeterka

+1

XOR换用低内存芯片的习惯用法。但是一个成熟的编译器会优化它。 –

回答

1

它可以通过bitwise XOR做到:

x ^= y; 
y ^= x; 
x ^= y; 

这就是所谓的XOR swap algorithm(维基百科的文章将详细介绍如何工作的,所以我建议你读它)。

然而,这是不是特别理解(更不用提它仅适用于整型),因此在几乎所有环境中使用临时变量将是首选,:

int tmp = x; 
x = y; 
y = tmp;