您的位置:首页 > 其它

关于交换整数变量值的问题

2010-10-26 17:06 281 查看
问题:交换整数a和b的方法有几种?

第一种:

int swap(int &a, int &b)
{
int tmp;
tmp = a;
a = b;
b = tmp;
return 0;
}

该方法缺点是需要申请一个整形变量,但是不会出现其他数据溢出的问题。

第二种:

int swap(int &a, int &b)
{
a = a - b;
b = a + b;
a = b - a;
return 0;
}

该方法存在数据溢出的风险。例如a是一个非常大的整数,而b是一个非常小的负数,那么a-b就出现了数据溢出。优点不需要申请多余的变量。

第三种:

int swap(int &a, int &b)
{
a = a^b;
b = a^b;
a = a^b;
return 0;
}
该方法即客服了数据溢出的问题也避免了申请多余变量。但是存在一个问题是a和b不能是.指向相同变量的引用。否则会导致该变量的值为0。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: