不定义第三个变量,交换两个整型变量的值。(两种方法)

操作符 专栏收录该内容
2 篇文章 0 订阅

方法一

注:此方法,在整数值很大的时候,相加可能会超出int的范围。

代码:

#include <stdio.h>

int main()
{
  int a = 23;
	int b = 32;
	printf("a = %d,b = %d\n",a,b);
	a = a + b;
	b = a - b;
	a = a - b;
   printf("a = %d,b = %d\n",a,b);
   return 0;
}

结果:

a = 23,b = 32
a = 32,b = 23

方法二

注:此方法不存在溢出的问题,算是对方法一的优化吧

知识点引入:

异或运算符 “^”
两个整数异或,是用他们的二进制逐位相比较,若某一位相同(都为0或者都为1)则结果的该位为0,否则为1.(同0异1)
代码:

#include <stdio.h>

int main()
{
  int a = 23;
	int b = 32;
	printf("a = %d,b = %d\n",a,b);
	a = a ^ b;
	b = a ^ b;
	a = a ^ b;
   printf("a = %d,b = %d\n",a,b);
   return 0;
}

结果:

a = 23,b = 32
a = 32,b = 23
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值