黑马程序员技术交流社区

标题: 关于教程里逻辑与和逻辑或的问题的(问题太长(分段写... [打印本页]

作者: 学习专用    时间: 2015-5-29 16:44
标题: 关于教程里逻辑与和逻辑或的问题的(问题太长(分段写...

这是老师讲的一个例子,视频的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。
有哪位师兄师姐明白这其中的关系
还是我理解的有问题? 还请解惑,新手一枚,感激不尽。




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

c中只有&& || ?:和逗号这四个规定了求值顺序  oc就不知道了。

作者: 李竞还活着    时间: 2015-6-3 23:00
可以这么理解:我们所学的是解释的计算机运行原理,是有了计算机的运算之后,我们再根据结果去解释
作者: 黑马贾永强    时间: 2015-6-18 22:29
O(∩_∩)O谢谢 分享
作者: 大果冻    时间: 2015-6-18 22:31
如何更好的消化学习内容




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