打印

C语言编写程序,下面这个程序怎么写

[复制链接]
1253|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
畅想天子|  楼主 | 2020-2-26 17:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
zolee| | 2020-2-26 17:52 | 只看该作者
具体代码如下:
a=a+b;
b=a-b;
a=a-b;

使用特权

评论回复
评论
R2D2 2020-2-27 09:02 回复TA
@zyj9490 :你是个没接触过高密度运算的井底之蛙。 
R2D2 2020-2-27 09:01 回复TA
@zyj9490 :蠢货,溢出了结果依然是对的。 
zyj9490 2020-2-26 21:51 回复TA
奇思形巧而已。还是在架构上多动心思。现在省内存不合理。 
zyj9490 2020-2-26 21:50 回复TA
二者之和有可能溢出。 
板凳
畅想天子|  楼主 | 2020-2-26 20:00 | 只看该作者
zolee 发表于 2020-2-26 17:52
具体代码如下:
a=a+b;
b=a-b;

感谢您的帮助,学习了

使用特权

评论回复
地板
前功尽弃| | 2020-2-27 08:27 | 只看该作者
估计是面试的题目或则是试卷的题目

使用特权

评论回复
5
畅想天子|  楼主 | 2020-2-27 16:23 | 只看该作者
前功尽弃 发表于 2020-2-27 08:27
估计是面试的题目或则是试卷的题目

是的,面试题

使用特权

评论回复
6
畅想天子|  楼主 | 2020-2-27 16:29 | 只看该作者
采用加减运算,有可能存在溢出,有没有更好的答案

使用特权

评论回复
7
vrgood| | 2020-2-27 22:45 | 只看该作者
用xor,不会溢出。
a=a^b
b=b^a
a=a^b

使用特权

评论回复
8
R2D2| | 2020-2-28 08:21 | 只看该作者
畅想天子 发表于 2020-2-27 16:29
采用加减运算,有可能存在溢出,有没有更好的答案

n你跟zyj9490一样蠢,你就不会验算一下溢出会不会出问题吗?连正确答案都看不懂的玩意儿还想通过面试?

使用特权

评论回复
评论
R2D2 2020-2-28 08:41 回复TA
@zyj9490 :有本事验算一遍溢出为什么会不对,没本事跪墙角凉快去吧。 
zyj9490 2020-2-28 08:35 回复TA
因炎而得病从疯人院跑出来的。 
9
jackyhuang1988| | 2020-2-28 15:53 | 只看该作者
都直接跟你说了a=10, b=20了。那就a=20, b=10得了

使用特权

评论回复
评论
ygd8718 2020-2-29 21:08 回复TA
回答正确。 从资源使用看,如果是汇编只占用两个内存空间。a和b指向内存地址(直接地址),内存内容为10、20。 如果编译器是c环境,则可能会用4个内存,两个立即数和两个地址指针a和b。 
10
憨厚诚实大叔| | 2020-2-28 18:05 | 只看该作者
只想跟面试官吹牛,不想做面试题又要找工作了我

使用特权

评论回复
11
R2D2| | 2020-2-28 21:36 | 只看该作者
验算一下,设a=0xd0,b=0xc1,类型都是uint8_t
a=a+b;  a=0x91; 发生溢出正确结果是0x191,溢出后0x100被丢弃
b=a-b;  b=0xd0; 发生溢出,实际上减过后应该是0xffffffd0,前面的ff被丢弃
a=a-b; a=0xc1; 发生溢出,实际上减过后应该是0xffffffc1,前面的ff被丢弃

可以很清楚的看到,三次运算发生了三次溢出,但是转换结果依然是正确的。zyj9490和楼主这么蠢,你们的妈妈知道吗???

使用特权

评论回复
12
wx85105157| | 2020-2-29 09:16 | 只看该作者
R2D2 发表于 2020-2-28 21:36
验算一下,设a=0xd0,b=0xc1,类型都是uint8_t
a=a+b;  a=0x91; 发生溢出正确结果是0x191,溢出后0x100被丢 ...

666 点赞

使用特权

评论回复
13
ygd8718| | 2020-2-29 12:25 | 只看该作者
本帖最后由 ygd8718 于 2020-2-29 12:44 编辑

题面解法:
一、
a=b;
b=b/2;或b=a/2;
二、
b=a; 或b=b-a;
a=a+a;或a=a*2;或a=b*2;

从资源占用率和运算速度考虑,先用加减,后用乘除。
虽然题中规定不用第三变量,但在单片机运算过程中始终有周边寄存器Rn参与其中。如果用汇编语言解法更为简单。





使用特权

评论回复
14
R2D2| | 2020-3-2 17:24 | 只看该作者
这个问题的答案可以去这个帖子29楼下载书籍,在第2章第19节。
https://bbs.21ic.com/icview-323262-2-1.html

使用特权

评论回复
15
yyf018| | 2020-3-3 08:18 | 只看该作者

使用特权

评论回复
16
mks666| | 2020-3-3 10:30 | 只看该作者
a+b=a,a-b=b居然不ok

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

57

主题

331

帖子

2

粉丝