怎么不用第三片空间实现两个数的交换?c++题目

来源:百度知道 编辑:UC知道 时间:2024/07/07 01:38:44
swap(int &a,int &b)
{
}
怎么不用第三片内存空间实现两个数的交换?
请高手把函数体写一下,谢谢了

可以采用 异或 操作

函数体如下:
swap(int &a,int &b)
{
a=a^b;
b=b^a;
a=a^b;
}

可以采用 异或 操作

函数体如下:
swap(int &a,int &b)
{
a=a^b;
b=b^a;
a=a^b;
}当a=b的时候你就知道有bug 了把
C语言中可以这样:
swap(int *a,int *b)
{
*a=*a+*b;
*b=*a-*b;
*a=*a-*b;}
也许*a 和*b的地址空间一样的时候你就完了bug
呵呵

swap(*p1,*p2)
{int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}

C语言中可以这样:
swap(int *a,int *b)
{
*a=*a+*b;
*b=*a-*b;
*a=*a-*b;

利用位运算