黑马程序员技术交流社区

标题: 问一个问题...关于逻辑运算符短路的!求指教 [打印本页]

作者: zhouzhichao    时间: 2016-1-4 10:43
标题: 问一个问题...关于逻辑运算符短路的!求指教
x = y = z = 0;
result = ++x||++y&&z++;

结果显示 x = 1, y = 0, z = 0;
视频里老师的解释是逻辑短路问题, 检测到 ++x 表达式的值为 1 ,则不向下执行。
我想请问一下, 逻辑||的优先级低于逻辑&&,不是应该先执行&&吗?
那么结果应该为  x = 1 , y = 1, z = 0。
可是结果并不是,证明我的想法不对,但优先级确实是&&的高,
希望各位朋友解释一下!拜托了!
作者: ak13211    时间: 2016-1-4 11:17
同求同求
作者: FYJKL    时间: 2016-1-4 12:27
result = ++x||(++y&&z++);这样理解结果就对了
作者: 海棠依旧2046    时间: 2016-1-4 12:28
这里有陷阱,考试需注意
作者: zhouzhichao    时间: 2016-1-4 12:36
海棠依旧2046 发表于 2016-1-4 12:28
这里有陷阱,考试需注意

什么陷阱{:3_46:} 这么可怕...
作者: zhouzhichao    时间: 2016-1-4 12:38
FYJKL 发表于 2016-1-4 12:27
result = ++x||(++y&&z++);这样理解结果就对了

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

谢谢你!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2