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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


这是老师讲的一个例子,视频的3_17节。
result = a>2 || b<4 && a>5;     在这里老师提到 优先级问题  也就是说先算逻辑与  在算  逻辑或; 所以结果是1;
在下一集视频3_18中,老师讲到逻辑运算符短路问题:   
result = (++x)||(++y)&&(z++);  在这个例子中和上个视频一样的式子,同样的先或后与,运行结果是 x=1,y=0,z=0,
老师讲到y和z都短路了,所以没出现值,但是按照上一个视频中对优先级的理解, 算完++之后应该算&&与运算,也就是(++y)&&(z++),
他们2个的值都为1
就算短路也应该是算完这一步才短路,
所以最后结果应该是  x=0 , y = 1 ,z = 1。
有哪位师兄师姐明白这其中的关系
还是我理解的有问题? 还请解惑,新手一枚,感激不尽。



4 个回复

倒序浏览
优先级和求值顺序并不相关,逻辑与和逻辑或的求值顺序规定了一定是从左往右。
  a||b&&c  优先级的意义是告诉我们这个表达式是表示a||(b&&c)而不是(a||b)&&c。这时候并没有产生计算,理解了这个表达式之后 然后才开始从左往右计算。

c中只有&& || ?:和逗号这四个规定了求值顺序  oc就不知道了。
回复 使用道具 举报
可以这么理解:我们所学的是解释的计算机运行原理,是有了计算机的运算之后,我们再根据结果去解释
回复 使用道具 举报
O(∩_∩)O谢谢 分享
回复 使用道具 举报
如何更好的消化学习内容
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马