C语言交换两个数的值

时间:2022-06-22 23:22:02

第一种方式就是最常用的定义第三个变量的方式:(开发者最常用的方式,简单易懂!)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>

int main(void)
{
	int a = 10;
	int b = 20;
	int temp = a;
	a = b;
	b = a;
	printf("a=%d,b=%d\n",a,b);
	system("pause");
	return 0;
}

第二种是两个变量互相加减操作的方式:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>

int main(void)
{
	int a = 10;
	int b = 20;
	a = a + b;
	b = a - b;
	a = a - b;
	printf("a=%d,b=%d\n",a,b);
	system("pause");
	return 0;
}


第三种与第二种是一样的,不过是采用了乘除的方式而已:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>

int main(void)
{
	int a = 10;
	int b = 20;
	
	a = a * b;
	b = a / b;
	a = a / b;
	printf("a=%d,b=%d\n",a,b);
	system("pause");
	return 0;
}


第四种是采用按位异或运算的方式:任意一个数与任意一个给定的值连续异或两次,值不变!

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>

int main(void)
{
	int a = 10;
	int b = 20;
	a = a^b;
	b = a^b;
	a = a^b;
	printf("a=%d,b=%d\n",a,b);
	system("pause");
	return 0;
}

第五种是采用移位的方法:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>

int main(void)
{
	int a = 10;
	int b = 20;
	
	a = a << 16;
	a = a | b;
	b = a >> 16;
	a = a & 0xffff;
	printf("a=%d,b=%d\n",a,b);
	system("pause");
	return 0;
}

此方法的另一个版本:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>

int main(void)
{
	int a = 10;
	int b = 20;
	
	a <<= 8;  // 将a移动到高位 
	a += b;   // 将b的值加到a移动之后的低位 
	b = a >> 8;  // 取a原来的值 
	a = a & 0xff;  // 取新移进来的b,高位直接通过与运算赋值为0 
	printf("a=%d,b=%d\n",a,b);
	system("pause");
	return 0;
}