| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1328 人关注过本帖
标题:c语言中的优先级问题
只看楼主 加入收藏
炎火手刀
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-6-6
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:10 
c语言中的优先级问题
i=3
请问这个表达式(i++)*(++i)+(i--)*(--i)=?
如何计算的?
搜索更多相关主题的帖子: 优先级 表达式 c语言 
2011-03-16 15:26
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
收藏
得分:2 
编译器不同。计算结果就会有差别的。楼主自己上机运行一下就行了呀。
2011-03-16 15:29
minand
Rank: 2
等 级:论坛游民
帖 子:71
专家分:89
注 册:2011-3-16
收藏
得分:2 
为什么那么多人喜欢纠结这种没意义的问题?
2011-03-16 15:38
chenwei435
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:322
专家分:1611
注 册:2010-11-28
收藏
得分:2 
其实这种东西,根本上就很难用的上的。一般都是c+=a.这样的。用a=c++这种形式很少的。而且不同的编译器运算结果不同。
在vc中有c=3.(++c)+(++c)+(++c)=16.
在turbo c 2中有c=3.(++c)+(++c)+(++c)=18.
2011-03-16 17:20
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:2 
这种问题有很多人问过,楼主可以自己去搜搜旧帖子。
2011-03-16 18:03
chenwei435
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:322
专家分:1611
注 册:2010-11-28
收藏
得分:0 
呵呵,这种问题在论坛里不知提了多少遍,其实在实际编程里很难用的到。
int i=3,t;
t=(i++)*(++i)+(i--)*(--i);
那t等于多少呢。不同编译器不同。我说说在tc环境下的情况。
先算第一个i++得i=3,再算第二个++i的i=4,再算第四个i--得i=4,再算--i得i=3,算完i后,算t=18,此时再算i++,i--得,i还是等于3;
最后输出t=18
2011-03-19 17:52
CaiBird_xzf
Rank: 1
等 级:新手上路
帖 子:4
专家分:6
注 册:2011-3-19
收藏
得分:2 
这个跟编译器有关啊,不同的编译器执行顺序不同,有从右往左还有其他的。自己动手试下不就知道了。

其实真的不必在这种问题上纠结,没意义。
2011-03-19 20:24
赵贺辉
Rank: 2
来 自:河南
等 级:论坛游民
帖 子:28
专家分:19
注 册:2011-3-18
收藏
得分:2 
i=3
表达式(i++)*(++i)+(i--)*(--i)=?
1.   i++==3    i==4
2.   ++i==5    i==5
3.   i--==5    i==4
4,  --i==3    i==3
所以3*5+5*3=30

[ 本帖最后由 赵贺辉 于 2011-3-20 13:22 编辑 ]
2011-03-19 20:41
终极意义
Rank: 1
等 级:新手上路
帖 子:7
专家分:2
注 册:2011-3-18
收藏
得分:2 
1.首先告诉楼主这种语句是在C语言中典型的应该避免的歧义句,因为不同的系统会有不同的答案
2.有的系统按照从左至右的顺序求解,相当于(i++)*(++i)+(i--)*(--i)=3*5+5*3=30;
3.而在Turbo C中,相当于(i++)*(++i)+(i--)*(--i)=3*3+3*3=18;
4.总之,应该避免这种句子,这是一个合格编程人员应该知道的基本的东西。
5.要是还不明白的话,可以继续跟帖。
2011-03-19 21:47
a396550814
Rank: 2
等 级:论坛游民
帖 子:15
专家分:14
注 册:2011-3-19
收藏
得分:2 
回复 9楼 终极意义
学到了~~~
2011-03-19 22:19
快速回复:c语言中的优先级问题
数据加载中...
 
   



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

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