关于数值交换的几种方法:
一、引用中间变量
1、直接利用中间变量
#include <stdio.h>
int main(){
int a = 10;
int b = 20;
int c;
//交换前
printf(" Before switch:a = %d,b = %d\n",a,b);
//交换
c = a;
a = b;
b = c;
//交换后
printf("After switch:a = %d,b = %d\n",a,b);
return 0;
}
2、通过指针实现
#include <stdio.h>
void change(int *,int *);
int main(){
int a = 10;
int b = 20;
//交换前
printf(" Before switch:a = %d,b = %d\n",a,b);
//交换
change(&a,&b);
//交换后
printf("After switch:a = %d,b = %d\n",a,b);
return 0;
}
void change( int * p1 ,int * p2){
int c = *p1;
*p1 = *p2;
*p2 = c;
}
二、不引用中间变量
1、利用加法
//此种方法可能会溢出;
#include <stdio.h>
int main(){
int a = 10;
int b = 20;
//交换前
printf(" Before switch:a = %d,b = %d\n",a,b);
//交换
a = a + b;
b = a - b;
a = a - b;
//交换后
printf("After switch:a = %d,b = %d\n",a,b);
return 0;
}
2、通过运算符^
#include <stdio.h>
int main(){
int a = 10;
int b = 20;
//交换前
printf(" Before switch:a = %d,b = %d\n",a,b);
//交换
a = a^b;
b = a^b;
a = a^b;
//交换后
printf("After switch:a = %d,b = %d\n",a,b);
return 0;
}