今天去面试,笔试题有一道两个变量交换的题,不使用第三个变量。以前看过给忘了,现在把他写下来,方便以后查询。
int a=3,b=5;交换a,b的值。
1.c++:引用
void swp_1(int &a, int &b) {
a = a - b;
b = a + b;
a = b - a;
}
void swp_2(int &a, int &b)
{
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
2.c语言:指针
void swp_1(int *a, int *b) {
*a = *a -*b;
*b = *a + *b;
*a = *b - *a;
}
void swp_2(int *a, int *b)
{
*a =*a ^*b;
*b =*a ^*b;
*a =*a ^*b;
}