每天C一下之一

[复制链接]
 楼主| 2009chinalj 发表于 2013-11-14 21:05 | 显示全部楼层 |阅读模式
交换两个变量的值,不得借助额外的存储空间:a<=>B  来详细的代码
16777216 发表于 2013-11-14 23:07 | 显示全部楼层
a=a+b
b=a-b
a=a-b

评论

不过有点投机取巧,工程上可不敢这么来。  发表于 2013-11-15 21:29
厉害!  发表于 2013-11-15 21:26
 楼主| 2009chinalj 发表于 2013-11-15 08:55 | 显示全部楼层
16777216 发表于 2013-11-14 23:07
a=a+b
b=a-b
a=a-b

:funk:
16777216 发表于 2013-11-15 08:58 | 显示全部楼层
2009chinalj 发表于 2013-11-15 08:55

有错吗
 楼主| 2009chinalj 发表于 2013-11-15 08:58 | 显示全部楼层
a、 b
a = a^b;
b = a^b = a^b^b = a;
a = b^a = a^a^b = b;
这是我知道的答案 不知道还有没有别的?

16777216 发表于 2013-11-15 09:08 | 显示全部楼层
2009chinalj 发表于 2013-11-15 08:58
a、 b
a = a^b;
b = a^b = a^b^b = a;

我用加减法 你用^  差不多的意思吧
ys_r@sh 发表于 2013-11-15 10:53 | 显示全部楼层
2009chinalj 发表于 2013-11-15 08:58
a、 b
a = a^b;
b = a^b = a^b^b = a;

你这个是按位进行异或运算的方法
ys_r@sh 发表于 2013-11-15 11:04 | 显示全部楼层
16777216 发表于 2013-11-15 09:08
我用加减法 你用^  差不多的意思吧

ys_r@sh 发表于 2013-11-15 11:29 | 显示全部楼层
==是两个变量做相等比较。可以是两个字符型变量吗?或者比较一个变量是否等于一个常量?例如A==x,字符变量是否是字符常量A?可以这么使用吗?
16777216 发表于 2013-11-15 11:39 | 显示全部楼层
ys_r@sh 发表于 2013-11-15 11:29
==是两个变量做相等比较。可以是两个字符型变量吗?或者比较一个变量是否等于一个常量?例如A==x,字符变量 ...

可以的啊 单片机 计算机都是二进制存储而已
16777216 发表于 2013-11-15 11:40 | 显示全部楼层
ys_r@sh 发表于 2013-11-15 11:29
==是两个变量做相等比较。可以是两个字符型变量吗?或者比较一个变量是否等于一个常量?例如A==x,字符变量 ...

不过要小心的是我这个有可能超出变量范围的可能
这么想来,好像还是楼主的好一些
qyihan 发表于 2013-11-15 12:33 | 显示全部楼层
2楼正解
oldda 发表于 2013-11-15 13:10 | 显示全部楼层
路过,学习!
ssagittis 发表于 2013-11-15 13:30 | 显示全部楼层
学习了
sunabeng 发表于 2013-11-15 13:54 | 显示全部楼层
16777216 发表于 2013-11-14 23:07
a=a+b
b=a-b
a=a-b

这个比较简单,好理解
byeyear 发表于 2013-11-15 14:48 | 显示全部楼层
浮点的话这个就悲剧了
还是异或吧
xmar 发表于 2013-11-15 16:56 | 显示全部楼层
无论是2楼、5楼的方法,C编译器实际还是需要3个存储单元。除非你用汇编。
zyj9490 发表于 2013-11-15 18:21 | 显示全部楼层
本帖最后由 zyj9490 于 2013-11-15 18:23 编辑

肯定有其他中间存储存中间结果。比如堆。。提出点有价值的东东,不要小聪明式的
john_lee 发表于 2013-11-15 21:09 | 显示全部楼层
无任何实用价值的帖子
通宵敲代码 发表于 2013-11-15 21:28 | 显示全部楼层
xmar 发表于 2013-11-15 16:56
无论是2楼、5楼的方法,C编译器实际还是需要3个存储单元。除非你用汇编。

你这厮定看过“编译原理”!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:改变这个世界的不是MBA是工程师。。其实我是一名电工

13

主题

177

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部