| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 547 人关注过本帖
标题:运算优先级的一个问题?
只看楼主 加入收藏
chihuyu
Rank: 2
等 级:论坛游民
帖 子:70
专家分:13
注 册:2011-12-26
结帖率:100%
收藏
 问题点数:0 回复次数:6 
运算优先级的一个问题?
#include"stdio.h"
void main()
{
    int a=3,b=4,c;
    c=a>b?++a:++b;
    printf("c=%d\n",c);
}

问题:
‘>’为关系运算符,而‘++x’为算术运算符,照理来说,算术运算符的优先级要比关系运算符高,但为什么实际情况是 先做了>的运算呢?
请高手回答,谢谢!
搜索更多相关主题的帖子: void include 优先级 
2012-01-24 16:21
墨清扬
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:294
专家分:817
注 册:2011-10-4
收藏
得分:0 
答案是5吗?这里先运算>,然后是?:,然后根据结果再运算++x

酱油实习生
2012-01-24 23:49
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
在你的问题里'++X'是嵌套在条件运算符?:里的一个目的表达式。
可以理解为 (a > b) ? (++a) : (++b);

重剑无锋,大巧不工
2012-01-25 12:01
ai8343512
Rank: 2
等 级:论坛游民
帖 子:75
专家分:94
注 册:2011-8-7
收藏
得分:0 
c=a>b?++a:++b;
= 号的优先级最低,所以最后赋值
?:是三目运算符,优先级在整句话中最高,其实不用记,做多了题自然就知道了
然后不是再用优先级来判断>和++的优先运算性,而是因为三目运算法的计算规则必须是先看前面的条件符不符合,符合就运算前面的++a不符合就运算后面的++b。

思考不应该由他人来指导,会思考的人不需要你来提醒他去思考一个简单的问题。
2012-01-25 13:49
chihuyu
Rank: 2
等 级:论坛游民
帖 子:70
专家分:13
注 册:2011-12-26
收藏
得分:0 
回复 4楼 ai8343512
还是没有将清楚
2012-01-25 22:41
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
如果你知道三目運算符在內部是被擴展為if/else語句處理的,自然明白為什麼如此。

授人以渔,不授人以鱼。
2012-01-25 23:00
chihuyu
Rank: 2
等 级:论坛游民
帖 子:70
专家分:13
注 册:2011-12-26
收藏
得分:0 
貌似有点懂了,谢谢
2012-01-27 09:31
快速回复:运算优先级的一个问题?
数据加载中...
 
   



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

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