问题:交换整数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。
浙公网安备 33010602011771号