标题:关于优先级的问题,请大家别见笑
只看楼主
Awa
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2004-12-31
 问题点数:0 回复次数:7 
关于优先级的问题,请大家别见笑
我刚刚学,想问一个关于优先级的问题 c<lim-1&&(c=getchar())!=EOF&&c!='\n' 它们具体执行顺序是怎样的?
搜索更多相关主题的帖子: 见笑 EOF getchar 顺序 
2005-01-25 18:42
typecool
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2005-1-25
得分:0 
晕。看得头都晕了。可以对照优先级列表看一下。首先执行的是()
2005-01-25 18:45
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
得分:0 
c&lt;lim-1&amp;&amp;(c=getchar())!=EOF&amp;&amp;c!='\n'


1。lim-1

2。c&lt;lim-1,若为真,则执行3

3. (c=getchar())!=EOF 若为真,则执行4

4。c!='\n'

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-01-25 19:14
Awa
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2004-12-31
得分:0 
knocker的解释是对的。但我搞不懂为什么不先执行c=getchar(),按理说()优先级最高,可不可以解释清楚一点,如果按这样岂不是&amp;&amp;优先级最高
2005-01-25 20:48
kaikai
Rank: 1
等 级:新手上路
帖 子:236
专家分:0
注 册:2005-1-7
得分:0 
括号确实比&amp;&amp;高,但并不是优先级高的就先执行。优先级用来做语法结构的划分。
这里的a &amp;&amp; (b=c)!=d如果不加括号,则变成(a&amp;&amp;b) = (c!=d),这不仅不符合作者的意愿,而且还有对非左值赋值的错误。
为了让编译器按照优先级能正确划分为 a &amp;&amp; ((b=c) != d),才需要加上一对括号。

Have you visit acm.tongji. lately?
2005-01-25 21:14
Awa
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2004-12-31
得分:0 
我还是不太明白,按我的理解的顺序是这样的:
1.(c=getchar())
2.lim-1
3.i&lt;lim-1
4.(c=getchar())!=EOF
5.c!='\n'
6.执行&amp;&amp;语句
我知道这样理解是错的,但就是不知道错在哪
2005-01-26 13:03
时空之蕊
Rank: 2
等 级:新手上路
威 望:3
帖 子:691
专家分:0
注 册:2004-10-31
得分:0 
c&lt;lim-1&amp;&amp;(c=getchar())!=EOF&amp;&amp;c!='\n'


1。lim-1

2。c&lt;lim-1,若为真,则执行3

3. (c=getchar())!=EOF 若为真,则执行4

4。c!='\n'
这个问题很好理解:看看c怎么实现计算的就知道了!通过扫描表达式!注意式是从左到右开始扫描的,扫描的时候将操作数和运算符压斩,当发现下一个运算符的优先级比前一个的低时前面的那个运算符将被计算!所以说结果会是这样!
注意()的优先级(必须和)匹配时才会计算()的值。
希望大家都明白了!

我渴望掌控时空的核心——用最先进的技术,打造无比美丽的世界!
2005-01-26 14:49
时空之蕊
Rank: 2
等 级:新手上路
威 望:3
帖 子:691
专家分:0
注 册:2004-10-31
得分:0 
对了忘记说了,当运算符被计算后将把表达式的值压斩(如果里面还有运算符要计算,没了的话就计算完毕了),如果运算符的计算后将在计算斩里面去掉!

我渴望掌控时空的核心——用最先进的技术,打造无比美丽的世界!
2005-01-26 14:53



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




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

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