运用C语言,不使用第三个变量交换两整型变量的值

1.通过两变量之间相加减交换值。(如果int值过大,可能存在溢出问题)

#include<stdio.h>
int main()
{ 
	int a=1;
	int b=2;
	printf("交换前:a=%d,b=%d\n",a,b);
	a=a+b;//a变为两项之和,b没变
	b=a-b;//b得到原来的a 
	a=a-b;//a得到原来的b 
	printf("交换后:a=%d,b=%d",a,b);
	return 0;
}

2.通过位异或(^)办法交换值。(不会溢出)

^ ——按(二进制)位异或,相同为0,不同为1。(异或异为真)

二进制中a=01,b=10,每位进行异或比较,得到结果。

#include<stdio.h>
int main()
{ 
	int a=1;//a=01
	int b=2;//b=10
	printf("交换前:a=%d,b=%d\n",a,b);
	a=a^b;//a=11
	b=a^b;//b=01
	a=a^b;//a=10
	printf("交换后:a=%d,b=%d",a,b);
	return 0;
}

一般情况下会使用第三个变量的方法交换两变量的值,代码可读性高,执行效率高;异或操作可读性差,执行效率低于其他方法!

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值