| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 530 人关注过本帖
标题:一个逻辑表达式的问题
取消只看楼主 加入收藏
黄昏黄昏
Rank: 2
等 级:论坛游民
帖 子:49
专家分:41
注 册:2013-1-10
结帖率:50%
收藏
 问题点数:0 回复次数:3 
一个逻辑表达式的问题
int x, y, z;
 x=y=z=0;
 ++x||++y&&++z;
 cout<<x<<","<<y<<","<<z<<endl;
输出结果是1,0,0,  第三行语句的表达式的值为真。可是逻辑操作符的优先顺序不是! && || 吗?这样的话先++y,值为真,然后++z,也为真,那么++y&&++z就是真,然后再和(++x)进行||运算,但是为什么最终的y和z的值都是0呢?    另外,这个问题不是x++*x++……那种讨论因为不同编译器而定义不同行为的问题,我想知道++x||++y&&++z表达式的运算过程
搜索更多相关主题的帖子: 表达式 
2013-03-01 13:04
黄昏黄昏
Rank: 2
等 级:论坛游民
帖 子:49
专家分:41
注 册:2013-1-10
收藏
得分:0 
回复 2楼 fanpengpeng
既然 求值顺序的4个操作符 && || ?:   那也应该是&&先啊,为什么到最后反而y和z都是0呢,而且,你写++x||(++y&&++z)  这样加括号的话就应该是++y&&++z进行运算,而你后面的解释意思是||的左操作数 ++x 为真,所以不进行后面的运算,相当于认为++x参与运算,这样不就和前面的两个说法矛盾了吗?不明白啊

得不到的永远在骚动,被偏爱都有恃无恐
2013-03-01 13:53
黄昏黄昏
Rank: 2
等 级:论坛游民
帖 子:49
专家分:41
注 册:2013-1-10
收藏
得分:0 
回复 6楼 fanpengpeng
明白了。。一个月没碰c都给忘了。。谢谢各位回答

得不到的永远在骚动,被偏爱都有恃无恐
2013-03-01 16:31
黄昏黄昏
Rank: 2
等 级:论坛游民
帖 子:49
专家分:41
注 册:2013-1-10
收藏
得分:0 
回复 5楼 Susake
谢谢解释!!!!!!

得不到的永远在骚动,被偏爱都有恃无恐
2013-03-01 16:31
快速回复:一个逻辑表达式的问题
数据加载中...
 
   



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

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