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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李海贤 中级黑马   /  2015-7-24 19:26  /  912 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

9 个回复

倒序浏览
好高深的呀  看的视屏我都忘了
回复 使用道具 举报
jinlong129 发表于 2015-7-24 20:06
好高深的呀  看的视屏我都忘了

视频只说了简单的短路问题,而且还没说清楚,遇到更复杂的混合运算就更理解不了了
回复 使用道具 举报
李海贤 发表于 2015-7-24 20:43
视频只说了简单的短路问题,而且还没说清楚,遇到更复杂的混合运算就更理解不了了 ...

大神呀   你已在黑马了吗
回复 使用道具 举报
先不考虑优先级,先看第一个逻辑运算符的左边的式子,从左到右的判断。有什么问题的话就自己在编译器里实验,就会得到结果了
回复 使用道具 举报
杨远鹏 发表于 2015-7-24 21:15
先不考虑优先级,先看第一个逻辑运算符的左边的式子,从左到右的判断。有什么问题的话就自己在编译器里实验 ...

谢谢你的解答,不过貌似没有解决我问的问题,这个问题我想了昨天一天,自己想通了。
回复 使用道具 举报
jinlong129 发表于 2015-7-24 21:00
大神呀   你已在黑马了吗

什么大神。。。我也刚学。我现在在家,今天去北京
回复 使用道具 举报
确实没有想过这个。。。。
回复 使用道具 举报
LSwbfil2015 发表于 2015-7-25 09:41
确实没有想过这个。。。。

其实就是不用管有多少变量,先根据优先级把没带括号的先带上括号,最后看成是,前边一整部分+逻辑符+后边一整部分,只要前边那个整部分短路了就不用看后边那个部分了。如果没有短路,那么把前半部分又继续分为两部分看有没有短路,这样依次下去就知道了
回复 使用道具 举报
学习了·
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马