黑马程序员技术交流社区

标题: 逻辑运算符的短路问题 [打印本页]

作者: 泥娃娃    时间: 2016-3-21 09:46
标题: 逻辑运算符的短路问题
  1. int x, y, z, result;
  2.     x = y = z = 0;
  3.     result = ++x ||(++y&&z++);
  4.     printf("x=%d,y=%d,z=%d,result=%d\n",x,y,z,result);
  5.     return 0;
复制代码
输出结果并非是1,1,1,1.而是1,0,0,1
是因为逻辑或短路了,
A&&B,若A为假,结果为假,B就不执行了,这就是逻辑与短路。
A||B,若A为真,结果为真,B就不执行了,这就是逻辑或短路。
本题中发生的就是逻辑或短路了,因此y,z都没有尽兴计算。

作者: muzipiao    时间: 2016-3-21 10:24
好吧,学习了,我也犯错了
作者: zxinsunshine    时间: 2016-4-4 23:22
请问,当逻辑运算符与自增或自减运算符一起使用的时候,是不是不用考虑逻辑运算符的优先级啊?
作者: 最爱舒儿    时间: 2016-4-5 00:08
学到了                                                        
作者: tdwydan1    时间: 2016-4-5 21:51
出选择题的时候要小心了,这地方陷阱非常多!
作者: 缘之有缘    时间: 2016-4-5 22:11
学习了         




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