A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡铭 中级黑马   /  2014-4-27 17:34  /  1651 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int x=3,y=4,z=5; x||++y&&y-z .
执行顺序为什么是(x)||(++y&&y-z )?
&&的优先级高于|| ,不是应该先判断 ++y&&y-z
再和x比较么??

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

8 个回复

倒序浏览
首先|| 和&&的结合方向都是从左到右。&&高于||,所以先算(++y&&y-z )等算出结果再算(x)||结果。

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
楼主没错,答案也没错。顺序是这样的
这个题的运算顺序是 ++y  y-z , && , ||
++y = 5 此时y值是5
y-z = 5 - 5 = 0
所以(++y&&y-z )中,左真右假,该算式的结果为0
带入原式(x)||(++y&&y-z ),或运算,左值为1 ,右值为0,算式结果为1

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
  1. ||的执行顺序是先执行左边的如果为真就不执行右边的
复制代码
回复 使用道具 举报

谢谢...
长知识了
回复 使用道具 举报

不用客气         
回复 使用道具 举报
好多运算符的顺序都忘了,看了这帖子又学到一个知识点
回复 使用道具 举报
小海 中级黑马 2014-4-28 17:50:42
8#
在这里,特别要注意的就是||和&&;对于||,如果左值为真就不再判断右边了,整个表达式的值为真;
回复 使用道具 举报
小海 中级黑马 2014-4-28 17:53:31
9#
怎么回事,没打完就发上去了,再补充一下吧。对于&&,如果左为0,整个表达式的值就为假,不再判断右边的了;另外,在c语言中,所有非0的数字或字符都为真。

评分

参与人数 1技术分 +1 收起 理由
bao9107 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马