我们通常使用
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;
仍然没有任何帮助,任何想法?
答案 0 :(得分:4)
要交换变量a
和变量b
:std::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,因此对于其他用例它几乎没有开销,并且不会因任何原始类型而溢出