在C / C ++中交换两个数字而不是第三个

时间:2016-09-30 06:35:22

标签: c++

我们通常使用

a=a+b; 
b=a-b; 
a=a-b;

解决此代码的逻辑,但是,如果我们使用int,那么在说30000代码失败后,如果我们采用long,则在1000000之后失败} 或者。我的目标是,不要增加代码的长度,执行相同的操作。我已尝试使用BIT wise XOR

a = a ^ b;
b = a ^ b;
a = a ^ b;

仍然没有任何帮助,任何想法?

1 个答案:

答案 0 :(得分:4)

要交换变量a和变量bstd::swap(a, b);
示例:

int a = 10;
int b = 20;

std::cout << "Before swap\n";
std::cout << "Value of a: " << a << '\n';
std::cout << "Value of b: " << b << '\n';

std::swap(a, b);

std::cout << "After swap\n";
std::cout << "Value of a: " << a << '\n';
std::cout << "Value of b: " << b << '\n';

使用GCC 4.9.2输出:

  

在交换之前   价值a:10
  b的值:20
  交换后   a的价值:20
  b的值:10

这种方式在内部使用rvalues,因此对于其他用例它几乎没有开销,并且不会因任何原始类型而溢出