C语言交换两个数的三种方法

C语言交换两个数

  使用临时变量交换。

#include 
int main() {

	int a = 10;
	int b = 20;
	int temp = a;
	a = b;
	b = temp;
	printf("%d %d" , a , b); // 20 10

	return 0;
}

  不使用临时变量交换。

#include 
int main() {

	int a = 10;
	int b = 20;
	a = a + b;
	b = a - b;
	a = a - b;
	printf("%d %d", a, b); // 20 10

	return 0;
}

  但是这个方法有局限,当a和b的值太大的时候,两个数加起来会溢出。

#include 
int main() {

	int a = 10;
	int b = 20;
	a = a ^ b;
	b = a ^ b;
	a = a ^ b;
	printf("%d %d", a, b); // 20 10

	return 0;
}

  使用异或不会溢出,但是只能作用于整数。相比来说还是用临时变量交换更稳妥,也更方便阅读。

你可能感兴趣的:(C,c语言,学习)