我们通常使用
a=a+b;
b=a-b;
a=a-b;
Run Code Online (Sandbox Code Playgroud)
解决此代码的逻辑,但是,如果我们使用int,则在 say 后30000代码失败,如果我们采用long,则在 say 后失败1000000。我的目标是,还不增加代码长度,做同样的操作。我已经尝试过使用BIT wise XOR,
a = a ^ b;
b = a ^ b;
a = a ^ b;
Run Code Online (Sandbox Code Playgroud)
仍然没有帮助,有什么想法吗?
交换变量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';
Run Code Online (Sandbox Code Playgroud)
使用 GCC 4.9.2 的输出:
交换前
a 的值:10
b 的值:20
交换后
a 的值:20
b 的值:10
这种方法在内部使用右值,因此对于其他用例来说它的开销几乎为零,并且对于任何基元类型都不会溢出
| 归档时间: |
|
| 查看次数: |
1353 次 |
| 最近记录: |