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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

x = y = z = 0;
result = ++x||++y&&z++;

结果显示 x = 1, y = 0, z = 0;
视频里老师的解释是逻辑短路问题, 检测到 ++x 表达式的值为 1 ,则不向下执行。
我想请问一下, 逻辑||的优先级低于逻辑&&,不是应该先执行&&吗?
那么结果应该为  x = 1 , y = 1, z = 0。
可是结果并不是,证明我的想法不对,但优先级确实是&&的高,
希望各位朋友解释一下!拜托了!

8 个回复

倒序浏览
同求同求
回复 使用道具 举报
result = ++x||(++y&&z++);这样理解结果就对了
回复 使用道具 举报
海棠依旧2046 来自手机 中级黑马 2016-1-4 12:28:42
板凳
这里有陷阱,考试需注意
回复 使用道具 举报
海棠依旧2046 发表于 2016-1-4 12:28
这里有陷阱,考试需注意

什么陷阱{:3_46:} 这么可怕...
回复 使用道具 举报
FYJKL 发表于 2016-1-4 12:27
result = ++x||(++y&&z++);这样理解结果就对了

这样理解确实是可以说得通,但是程序本身没有括号,而且应该先整体扫描一遍找到优先级高的先执行才对啊!不是么{:3_52:}
回复 使用道具 举报
&&优先级比较搞 所以后面两个看作整体    ++x已经是1 了    || 这个运算符 只要有一个为真就是真  所以不必看后边  结果就成x=1 y=0 z=0
回复 使用道具 举报
厉害厉害呀,,真牛逼
回复 使用道具 举报
15931110616 发表于 2016-1-5 11:52
&&优先级比较搞 所以后面两个看作整体    ++x已经是1 了    || 这个运算符 只要有一个为真就是真  所以不必 ...

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