黑马程序员技术交流社区

标题: 关于逻辑短路的问题 [打印本页]

作者: 李海贤    时间: 2015-7-24 19:26
标题: 关于逻辑短路的问题
在逻辑运算短路中,如果这个算式同时有”或“逻辑和”与“逻辑,那么怎么实现短路的,也就是说机器识别短路的机制是什么(是按顺序来?是按优先级来?是按结合性来?)比如:
int a = 0,b = 0,c = 0,re = -1;
例一、re = a++ && b++ || c++ ;
例二、re = c++ || b++ && a++;
根据代码意思两个 re返回值都应该是1,但是a、b的值是不是都是0?
如果变量再多,逻辑符再多的话,我们怎么知道机器从哪个变量开始就短路了?


作者: jinlong129    时间: 2015-7-24 20:06
好高深的呀  看的视屏我都忘了
作者: 李海贤    时间: 2015-7-24 20:43
jinlong129 发表于 2015-7-24 20:06
好高深的呀  看的视屏我都忘了

视频只说了简单的短路问题,而且还没说清楚,遇到更复杂的混合运算就更理解不了了
作者: jinlong129    时间: 2015-7-24 21:00
李海贤 发表于 2015-7-24 20:43
视频只说了简单的短路问题,而且还没说清楚,遇到更复杂的混合运算就更理解不了了 ...

大神呀   你已在黑马了吗
作者: 杨远鹏    时间: 2015-7-24 21:15
先不考虑优先级,先看第一个逻辑运算符的左边的式子,从左到右的判断。有什么问题的话就自己在编译器里实验,就会得到结果了
作者: 李海贤    时间: 2015-7-25 08:35
杨远鹏 发表于 2015-7-24 21:15
先不考虑优先级,先看第一个逻辑运算符的左边的式子,从左到右的判断。有什么问题的话就自己在编译器里实验 ...

谢谢你的解答,不过貌似没有解决我问的问题,这个问题我想了昨天一天,自己想通了。
作者: 李海贤    时间: 2015-7-25 08:36
jinlong129 发表于 2015-7-24 21:00
大神呀   你已在黑马了吗

什么大神。。。我也刚学。我现在在家,今天去北京
作者: LSwbfil2015    时间: 2015-7-25 09:41
确实没有想过这个。。。。
作者: 李海贤    时间: 2015-7-25 09:48
LSwbfil2015 发表于 2015-7-25 09:41
确实没有想过这个。。。。

其实就是不用管有多少变量,先根据优先级把没带括号的先带上括号,最后看成是,前边一整部分+逻辑符+后边一整部分,只要前边那个整部分短路了就不用看后边那个部分了。如果没有短路,那么把前半部分又继续分为两部分看有没有短路,这样依次下去就知道了
作者: 刘彦麟    时间: 2015-7-25 10:03
学习了·




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