| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 469 人关注过本帖
标题:大家来分析一下以下程序的错误之处。
只看楼主 加入收藏
cdutzh101
Rank: 2
等 级:论坛游民
帖 子:43
专家分:64
注 册:2009-8-20
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:7 
大家来分析一下以下程序的错误之处。
有程序片段:
       int A,B,C,m=1,n=0;
       A=(--m=n++)?- -m:++n;  
       B=++m;
       C=n--;
自我分析:程序第二行是个三目运算后赋值给A,首先判断条件:--m=n++成立与否?按照以前的认识,--m与m--的区别是:前者先自减再取值,后者是先取值再自减。那么条件中m自减后为0,n取值0,后减为-1,因此条件不成立,m的值为-1给A,然后,再自减为-2,程序第三行中B为-2,第四行C为0.但程序运行后结果为2  0  2.请帮助解释下,我的分析哪里错了。谢谢
2010-10-24 19:49
love8888
Rank: 2
等 级:论坛游民
帖 子:3
专家分:10
注 册:2010-10-24
收藏
得分:5 
首先说明一点 --m=n++  ?能这样写吗 知道你是想用它作为条件,但=是赋值  这里应该写成--m==n++

其次你没有弄清楚自增自减的运算法则

比如第二句 --m 此时 这个表达式的值是0   m值也是0    而 n++ 此时表达式值为0 n值自增后成了1  

所以这里--m==n++ 是成立的 成立输出的是冒号前面的内容 而不是后面的。你刚说不成立输出前面的是错误的。

所以这里输出++n 前面n已经是1了 这里这个表达式的值是先运算 n再自增,表达式值和n值都为2 ,所以A=2


前面的弄清楚了 后面的就一样分析了
2010-10-24 20:14
zghnxzdcx
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:550
专家分:1176
注 册:2010-4-6
收藏
得分:0 
这种折腾人的无聊代码……

你永远不可能战胜一个纯傻子,因为他会把你的智商拉到和他同一个水平,然后用他的丰富经验打败你。
2010-10-24 20:16
love8888
Rank: 2
等 级:论坛游民
帖 子:3
专家分:10
注 册:2010-10-24
收藏
得分:5 
SHUO 错了 输出前面的内容 打错了
2010-10-24 20:25
love8888
Rank: 2
等 级:论坛游民
帖 子:3
专家分:10
注 册:2010-10-24
收藏
得分:0 
把 =  改成== vc6.0运行的结果是 -1 0 1

如果是=  运行结果是 2 1 2
2010-10-24 20:28
cacker
该用户已被删除
收藏
得分:10 
提示: 作者被禁止或删除 内容自动屏蔽
2010-10-24 23:48
cacker
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-10-24 23:50
xiepeilin
Rank: 1
等 级:新手上路
帖 子:22
专家分:5
注 册:2010-7-29
收藏
得分:0 
我怎么觉得那么乱呢?
特别是这一句 A=(--m=n++)?- -m:++n;
2010-10-25 10:29
快速回复:大家来分析一下以下程序的错误之处。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016079 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved