交换两个整数值的最佳方法
(以C语言为例)
第一种方法:设置一个变量对两个整数进行交换
#include<stdio.h>
int main(){
//定义两个整数
int a = 3;
int b = 5;
int temp; //定义一个整数型变量用于保存交换的值
//交换前打印结果
printf("交换前a的值:%d\n",a);
printf("交换前b的值:%d\n",b);
//交换
temp = a;
a = b;
b = temp;
//交换后结果测试
printf("交换后a的值:%d\n",a);
printf("交换后b的值:%d\n",b);
}
第二种方法:不需要额外定义变量直接进行交换
普通整数交换:
#include<stdio.h>
int main(){
//定义两个整数
int a = 3;
int b = 5;
//交换前打印结果
printf("交换前a的值:%d\n",a);
printf("交换前b的值:%d\n",b);
//交换
a = a + b;
b = a - b;
a = a - b;
//交换后结果测试
printf("交换后a的值:%d\n",a);
printf("交换后b的值:%d\n",b);
}
数组中整数交换:
#include<stdio.h>
int main(){
//定义两个整数
int a[2]= {3,5};
//交换前打印结果
printf("交换前a的值:%d\n",a[0]);
printf("交换前b的值:%d\n",a[1]);
//交换
a[0] = a[0] + a[1];
a[1] = a[0] - a[1];
a[0] = a[0] - a[1];
//交换后结果测试
printf("交换后a的值:%d\n",a[0]);
printf("交换后b的值:%d\n",a[1]);
}
注意:此方法容易整型数据溢出,对于32位字符最大表示数字是2147483647,如果是2147483645和2147483646交换就会失败。
第三种方法:使用位操作符进行交换
#include<stdio.h>
int main(){
//定义两个整数
int a = 3;
int b = 5;
//交换前打印结果
printf("交换前a的值:%d\n",a);
printf("交换前b的值:%d\n",b);
//交换
a ^= b;
b ^= a;
a ^= b;
//交换后结果测试
printf("交换后a的值:%d\n",a);
printf("交换后b的值:%d\n",b);
}