标题:自加自减表达式的疑问
只看楼主
jimmy2417
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-4-7
 问题点数:0 回复次数:17 
自加自减表达式的疑问
哪位哥哥或姐姐能告诉我在c语言中这句代码的值是多少呀!
i=3; i++*++i+i--*--i=?
如果是j=i++*++i+i--*--i 就是等于18,如果只是i++*++i+i--*--i就等于30
我不知道这是为什么,那位老兄可以解释一下呀

[此贴子已经被作者于2006-8-12 14:49:08编辑过]

搜索更多相关主题的帖子: 疑问 表达 
2006-08-12 14:46
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
得分:0 
250

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-08-12 14:57
jimmy2417
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-4-7
得分:0 
老兄可以认真一点吗?我是一个编程初学者!

2006-08-12 14:58
大水牛
Rank: 1
等 级:新手上路
威 望:1
帖 子:233
专家分:0
注 册:2005-11-21
得分:0 
i=3; i++*++i+i--*--i=?
首先(i++)=3
i=4
在运算(++i)=5
i=5
在(i--)=5
i=4
--i=3
i=3
现在可以运算+了,
(i++)*(++i)+(i--)*(--i)=30

j=i++*++i+i--*--i j=18
这个的原因是编译从右到左
先(--i)=2
i=2
i--=2
i=1
(i--)*(--i)=4
++i=2
++i+4=6
i++=3
所以为18
有点乱,好象是这样

虽然现在的我什么都不明白,但总有一天,我将包容一切,让优秀变成一种习惯。。。。。。。。。。。。
2006-08-12 15:29
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
得分:0 

象这种i++*++i+i--*--i语句,.
同一变量在同一表达式中连续自增或自减在不同的编译器中会有不同的结果.造成这种结果的原因就是"C标准中未作规定",所以,各种编译器编译过程中会采用不同方式优化.


偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-08-12 15:35
jiahu0215178
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2006-8-12
得分:0 
其实像你得出的这个问题,一般实际情况是不会出现的。
对于你的这个问题将依赖于不同的编译器。
2006-08-12 15:38
jimmy2417
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-4-7
得分:0 
楼上的老兄我觉得这段代码好像有问题
++i=2
++i+4=6
i++=3
好像违背了运算符号的优先级了吧!但也十分感谢你!
刚有一位朋友帮我解决了这个问题!
j=i++*++i+i--*--i j=18
那是因为在表达式中i的值始终没变,在(i++*++i+i--*--i)i的值时刻在改变着,
所以结果不同!
j=i++*++i+i--*--i=3*4+3*2=18

2006-08-12 15:42
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
得分:0 
汗!讨论这种垃圾代码。。。

还是花点时间学有意义的吧。

我的原则很简单:不做不喜欢的事!
2006-08-12 16:52
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 
真正编程的时候,谁会这样写

倚天照海花无数,流水高山心自知。
2006-08-12 19:30
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
得分:0 
以下是引用nuciewth在2006-8-12 19:30:03的发言:
真正编程的时候,谁会这样写
就是就是

羊肉串 葡萄干 哈密瓜!!
2006-08-12 20:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-83587-1-1.html




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

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