1、最简单、最标准的一种方法,创建一个临时变量
int main()
{
//分别给两个整型变量a,b赋值
int a = 45;
int b = 66;
//创建临时变量c
int c = 0;
//打印交换前a,b的值
printf("a=%d b=%d\n", a, b);
//将a的值赋给c
c = a;
//将b的值赋给a,即a存放了b原来的值
a = b;
//将c的值赋给b,即b存放了a原来的值
b = c;
//打印交换后a,b的值
printf("a=%d b=%d\n", a, b);
return 0;
}
2、在不创建临时变量的情况下交换两个数的值
(1)通过加减乘除的方法交换数值
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//交换两个数的内容
int main()
{
//分别给整型变量a,b赋值
int a = 65;
int b = 46;
//打印交换前a,b的值
printf("a=%d b=%d\n", a, b);
//计算a,b之间的差值,并赋值给a
a = a - b;
//利用差值求出原来的a,并赋值给b
b = a + b;
//原理同上
a = b - a;
//打印交换后a,b的值
printf("a=%d b=%d\n", a, b);
return 0;
}
由于int定义整型变量,占四个字节。它定义的值是有一个范围的,当需要交换的数字太大时,在通过加减乘除运算时会发生溢出,从而得到的结果不是正确的,可以用异或来解决,且异或过程中永远在int定义的范围内,不会发生溢出。
(2)异或的方法
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d%d", &a, &b);
printf("a=%d b=%d\n", a, b);
//a=3 b=4
//010 ---a
//100 ---b
//110 ---a^b
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("a=%d b=%d\n", a, b);
return 0;
}