黑马程序员技术交流社区

标题: C语言执行顺序 [打印本页]

作者: 胡铭    时间: 2014-4-27 17:34
标题: C语言执行顺序
int x=3,y=4,z=5; x||++y&&y-z .
执行顺序为什么是(x)||(++y&&y-z )?
&&的优先级高于|| ,不是应该先判断 ++y&&y-z
再和x比较么??

作者: 魅影穿眸    时间: 2014-4-27 17:46
首先|| 和&&的结合方向都是从左到右。&&高于||,所以先算(++y&&y-z )等算出结果再算(x)||结果。
作者: 桑托尔    时间: 2014-4-27 18:02
楼主没错,答案也没错。顺序是这样的
这个题的运算顺序是 ++y  y-z , && , ||
++y = 5 此时y值是5
y-z = 5 - 5 = 0
所以(++y&&y-z )中,左真右假,该算式的结果为0
带入原式(x)||(++y&&y-z ),或运算,左值为1 ,右值为0,算式结果为1
作者: jing迪    时间: 2014-4-27 18:15
  1. ||的执行顺序是先执行左边的如果为真就不执行右边的
复制代码

作者: 桑托尔    时间: 2014-4-27 18:38
jing迪 发表于 2014-4-27 18:15

谢谢...
长知识了
作者: jing迪    时间: 2014-4-28 00:07
桑托尔 发表于 2014-4-27 18:38
谢谢...
长知识了

不用客气         
作者: 李鹏-ios    时间: 2014-4-28 16:34
好多运算符的顺序都忘了,看了这帖子又学到一个知识点
作者: 小海    时间: 2014-4-28 17:50
在这里,特别要注意的就是||和&&;对于||,如果左值为真就不再判断右边了,整个表达式的值为真;
作者: 小海    时间: 2014-4-28 17:53
怎么回事,没打完就发上去了,再补充一下吧。对于&&,如果左为0,整个表达式的值就为假,不再判断右边的了;另外,在c语言中,所有非0的数字或字符都为真。




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