void swap1(int& a,int& b)
{
a^=b;
b^=a;
a^=b;
}
void swap2(int& a,int& b)
{
a=a+b;
b=a-b;
a=a-b;
}
void swap3(int& a,int& b)
{
a=a-b;
b=a+b;
a=b-a;
}
void swap (int& a,int& b)
{
a^=b^=a^=b;
return;
}
进一步考虑,这个问题可以引申为两块内存区域的数据交换。
我们只需要按字节交换就可以了(当然需要知道区域的长度)。
{
a^=b;
b^=a;
a^=b;
}
void swap2(int& a,int& b)
{
a=a+b;
b=a-b;
a=a-b;
}
void swap3(int& a,int& b)
{
a=a-b;
b=a+b;
a=b-a;
}
void swap (int& a,int& b)
{
a^=b^=a^=b;
return;
}
进一步考虑,这个问题可以引申为两块内存区域的数据交换。
我们只需要按字节交换就可以了(当然需要知道区域的长度)。