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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

&&的优先级不是比||高吗?执行这一句时 ++a||++b&&++c;不应该先执行(++b&&++c)吗?自己在编写的时候感觉是++a||(++b&&++c;)这样运行的,++a成立后不执行后续语句。但是&&优先级高于||,求大神解释。
#include <stdio.h>
int main(int argc, char *argv[]) {
   int a=1,b=2,c=3;
  ++a||++b&&++c;
printf("%d %d %d",a,b,c); return 0;
}

8 个回复

倒序浏览
我也是初学者,就想讨论一下
是不是因为++a是判断条件,所以要先执行或运算?
回复 使用道具 举报
逻辑运算符执行顺序从左往右


这里++a后面是 ||,因为++a为真,所以后面的就都不执行了,如果++a为假,那么就会运算(++b && ++c)

如果是 ++a || ++b || ++c 是这样,++a为假的话,就会判断++b是否为真。

所以上面&& 与 || 的优先级问题应该是判断的时候的优先级,而不是执行的顺序。

我个人是这么理解的。
回复 使用道具 举报 1 0
布鲁兹老爷 发表于 2015-10-10 11:03
这里++a后面是 ||,因为++a为真,所以后面的就都不执行了,如果++a为假,那么就会运算(++b && ++c)

...

感谢你的分析,似乎明白了
回复 使用道具 举报
gaozp 发表于 2015-10-10 09:57
我也是初学者,就想讨论一下
是不是因为++a是判断条件,所以要先执行或运算? ...

貌似就是这个道理,先判断++a的值是否为真
回复 使用道具 举报
a的值代表的本身就为真所以不执行后边的语句吧
回复 使用道具 举报
学到了学到了
回复 使用道具 举报

共同学习,共同进步才是好
回复 使用道具 举报
chensc 金牌黑马 2015-10-11 07:22:44
9#
学习学习!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马