中易网

C语言中,怎样不用中间变量而互换两个变量的值呢?

答案:5  悬赏:10  
解决时间 2021-01-07 20:17
C语言中,怎样不用中间变量而互换两个变量的值呢?
最佳答案
有两种方式可以不使用中间变量,交换同类型的变量a,b的值:
1 使用加法操作。
a+=b;
b=a-b;
a -= b;

2 使用异或操作:
a^=b;
b^=a;
a^=b;
全部回答
互换两个变量的值函数swap(),其实是用中间变量实现的
比如说:
a b
a = a+b;
b = a-b;
a = a-b;
例如:
a=5,b=3;
a = a+b =8;
b = a -b = 8-3 = 5;
a = a-b = 8 -5 =3
可以啊。
一:
int a,b;
a=10;
b=1;
a=a^b;
b=a^b;
a=a^b;
结果:a=1;b=10;
^是异或运算;
二;
int a=10,b=20;
a=a+b;
b=a-b;
a=a-b;
结果:a=20;b=10;
对于整数的确可以像楼上几个同学说的进行交换,但是这只是对于整数这个特殊情况,对于一般意义的量,比如指针类型,除非深入了解各种变量的计算机内部表示,否则只能通过中间变量来交换两个变量的值。而且从效率的角度来说,通过一个中间变量交换只是增加了一个空间开销,即使是两个整数交换的情况,通过中间变量交换也是最明智的选择,因为对整数交换的特殊方法只能注定程序的运行效率不高。
这个问题提的有想法。但是事实是目前我们实现交换两个变量的最好方法就是通过一个中间变量,虽然对于某些变量有些特殊的技巧使它们不通过中间变量实现,但是运算量大,代价远不如通过中间变量。

参考资料:《C程序设计语言》《深入理解计算机系统》

我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
被打一月后,笑看方舟子已是众叛亲离,孤家寡
蓝洁瑛的父母做什么工作
飞机到上海虹桥机场是在哪个飞机场,T1,还是
饥荒2014.11.06是什么版本
名爵专业造型烫染怎么去啊,有知道地址的么
跪求1995年北京中考物理试卷,,,,,, 采
入户玄关挂什么图好
上海到成都火车K696几点到南充!!
be full of 与be fill with 有什么区别?
月下老人三件宝物是什么
三分钟看懂葆婴,为什么都要做葆婴
跪求祸害成患妖成灾的百度云资源
大家升8.1耗电,发热的有没有
你们除了剑三还玩什么别的游戏
G4560很FX8300那个玩游戏好一些?
推荐资讯
女生食指中指和无名指三个手指头并起来大概有
重积分判断
一人で 和自分で区别
歌词那一天我感觉你的雪在融化
steam夏促怎么没找到战地1
星际争霸2怎么给建筑编队
高四的复习进度和高三相同吗?
美食销售的奋斗目标语言
印刷一本50页左右的杂志要多少成本??
蓝天美林湾停车场地址在什么地方,想过去办事
2∫xtanxsec²x dx=?
农村商业银行atm(邓川信用社)地址有知道的么
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?