黑马程序员技术交流社区
标题:
&&和||
[打印本页]
作者:
sl7s78s8
时间:
2014-7-24 21:44
标题:
&&和||
本帖最后由 sl7s78s8 于 2014-7-25 20:52 编辑
int x,y,z;
x=y=z=0;
++x || ++y && ++z;
printf("%d,%d,%d",x,y,z);
结果是1,0,0;不是应该先算&&吗,再算||得到1,1,1,的结果?
作者:
fantacyleo
时间:
2014-7-24 22:12
又是这个经典问题。答案是:运算符的优先级和求值顺序没有任何关系,只决定表达式如何加括号(
http://bbs.itheima.com/thread-128465-1-1.html
)。因此,&&优先级高仅仅意味着表达式被变换为:++x || (++y && ++z); 而||的运算顺序是C标准规定的,必须是从左到右,左边为真就不再计算右边。此题||的左边++x为1,真,因此右边不再计算
作者:
sl7s78s8
时间:
2014-7-25 20:36
fantacyleo 发表于 2014-7-24 22:12
又是这个经典问题。答案是:运算符的优先级和求值顺序没有任何关系,只决定表达式如何加括号(http://bbs.i ...
谢了。
作者:
黄莉萍
时间:
2014-7-25 21:22
学习了。。
作者:
心之信子
时间:
2014-7-25 21:59
明白了 谢谢分享
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2