| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 618 人关注过本帖
标题:为什么运算符优先级和结合性在这了失效??????
只看楼主 加入收藏
crazy_pro
Rank: 2
等 级:论坛游民
帖 子:13
专家分:12
注 册:2010-9-17
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
为什么运算符优先级和结合性在这了失效??????
#include <iostream.h>

void main()
{
    int x(3),y(4),z;
    z=x>y?++x:++y;
    cout<<x<<","<<y<<","<<z<<endl;//x=3 y=5 z=5
    z=x-y?x+y:x-3?y:x;
    cout<<x<<","<<y<<","<<z<<endl;//x=3 y=5 z=8
}
    结果是:3 5 5
             3 5 8
为什么第二次输出Z的值是8???求教
搜索更多相关主题的帖子: 运算符 失效 结合 
2010-09-25 22:45
xin310923
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:203
专家分:325
注 册:2009-12-22
收藏
得分:0 
  优先级比=  ?的优先级高。
2010-09-26 15:55
crazy_pro
Rank: 2
等 级:论坛游民
帖 子:13
专家分:12
注 册:2010-9-17
收藏
得分:0 
回复 2楼 xin310923
那为什么结果Z的值是8而不是3???????????
2010-09-27 13:22
minghan0313
Rank: 2
等 级:论坛游民
帖 子:15
专家分:31
注 册:2007-5-21
收藏
得分:20 


条件操作符的优先级相当低.当我们要在一个更大的表达式中嵌入条件表达式时,通常必须用圆括号把表达式括起来...........如果不严格使用圆括号将条件操作符括起来,将会得到意外的结果
因为不确定你问题的所在  所以翻了翻书  上面是从C++primer第四版 165页摘的一段话   

z=x-y?x+y:x-3?y:x;

因为优先级低,可不可以上面的表达式按颜色看成一个大的条件操作运算 ?x=3 y=5 z=5

先判断红色的 x-y  x-y不等于0  所以z=x+y=8  x-3?y:x根本就没有执行   

不知道自己说的正确与否  全为一家之见  如果说错了请不要见怪  我也是初学者
2010-09-27 14:52
xin310923
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:203
专家分:325
注 册:2009-12-22
收藏
得分:0 
回复 4楼 minghan0313
反正就是优先级的问题   自己回去看书吧
2010-09-27 15:09
xin310923
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:203
专家分:325
注 册:2009-12-22
收藏
得分:0 
lz也要回去多看几遍c++
2010-09-27 15:10
crazy_pro
Rank: 2
等 级:论坛游民
帖 子:13
专家分:12
注 册:2010-9-17
收藏
得分:0 
回复 4楼 minghan0313
他的结合性是由右向左的啊  是不是应该先算后面的啊!然后再算前面的表到式的值啊???如果按你说的
就没有问题啊,但是如果按我说的Z的值就是3啊!条件运算符的 结合性是由右向左的啊! 谢谢4楼的回复!
2010-09-27 23:10
crazy_pro
Rank: 2
等 级:论坛游民
帖 子:13
专家分:12
注 册:2010-9-17
收藏
得分:0 
回复 5楼 xin310923
谢谢
2010-09-27 23:10
minghan0313
Rank: 2
等 级:论坛游民
帖 子:15
专家分:31
注 册:2007-5-21
收藏
得分:0 
以下是引用crazy_pro在2010-9-27 23:10:24的发言:

他的结合性是由右向左的啊  是不是应该先算后面的啊!然后再算前面的表到式的值啊???如果按你说的
就没有问题啊,但是如果按我说的Z的值就是3啊!条件运算符的 结合性是由右向左的啊! 谢谢4楼的回复!
我也问了问其他同学   有人的确给出了结合性是从右向左计算的   不过就这个表达式来说   x-3?y:x这个表达式的值对整个表达式时没有影响的 因为在x-3?y:x里没有改变x和y的值 先计算x-3?y:x 也不会影响到前面xyz的值   如果变成x-3?++y:++x; 那么结果的值就该考虑了     
2010-09-28 08:59
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
多加点括号吧

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-09-29 00:08
快速回复:为什么运算符优先级和结合性在这了失效??????
数据加载中...
 
   



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

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