【C语言】交换两值

白话文——C语言题2

交换两值可以分为两种情况:

1.引入变量,交换两值

 - 直接交换
int main()
{
	int a = 10;
	int b = 20;
	int tmp;

	tmp = a;
	a = b;
	b = tmp;

	printf("a = %d b = %d ", a, b);
	printf("\n");

	system("pause");
	return 0;
}

 - 调用函数
 - void swap(int* x, int* y)
{
	int z = *x;
	*x = *y;
	*y = z;
}

int main()
{
	int a = 10;
	int b = 20;
	swap(&a, &b);
	printf("a = %d b = %d ", a, b);
	system("pause");
	return 0;
}

2. 不引入变量,交换两值

  • 按位异或
int main()
{
	int a = 10;
	int b = 20;

	a = a ^ b;
	b = a ^ b;
	a = a ^ b;
	
	printf("a = %d b = %d ", a, b);
	system("pause");
	return 0;
}
  • 加法
int main()
{
	int a = 10;
	int b = 20;
	
	a = a + b;
	b = a - b;
	a = a - b;

	printf("a = %d b = %d ", a, b);
	system("pause");
	return 0;
}
  • 乘法
int main()
{
	int a = 10;
	int b = 20;
	
	a = a * b;
	b = a / b;
	a = a / b;

	printf("a = %d b = %d ", a, b);
	system("pause");
	return 0;
}
  • 注:在不引入临时变量交换时,尽量使用按位异或的方式。在加法、乘法计算中会出现栈溢出的情况。
发布了18 篇原创文章 · 获赞 12 · 访问量 1836

猜你喜欢

转载自blog.csdn.net/qq_41286373/article/details/100990473
今日推荐