题目要求
给定两个整形变量的值,将两个值的内容互换。
1.引入一个新的变量temp
代码如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a=10;
int b=20;
int temp=0;
temp=a;
a=b;
b=temp;
printf("a=%d b=%d\n",a,b);
system("pause");
return 0;
}
2.不引入其它变量。
代码如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a=2147483648;
int b=70;
a=a+b;
b=a-b;
a=a-b;
printf("a=%d b=%d\n",a,b);
system("pause");
return 0;
}
这种情况考虑整形有溢出现象,所以这种方法有bug,应该引入一个新的算法,异或^,这种算法不会有溢出。
3.代码如下不引入其他变量。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a=2147483647;
int b=70;
a=a^b;
b=a^b;
a=a^b;
printf("a=%d b=%d\n",a,b);
system("pause");
return 0;
}
展示一下结果: