我想初始化一个 长度为1500 的unsigned char*缓冲区,以便我可以从其他来源存储值.
我的印象是,当我们提供接近最大整数限制的输入时,只使用X-OR进行交换.令人惊讶的是,使用加法和减法的这种简单交换也适用于那些输入.
#include <iostream>
void simple_swap(int &x, int &y) {
x += y;
y = x - y;
x -= y;
}
int main() {
int a = 10; int b = 15;
/* Testing integer overflow, sum has 1 bit outside of 4-bytes integer limit */
a = 0xFFFFFFFF; // a is 2^32-1 = 4294967295
b = 0xFFFFFFFE; // b is 2^32-2 = 4294967294
std::cout << "Before swap " << "a = " << (unsigned int)a << ", b=" << …Run Code Online (Sandbox Code Playgroud)