&& (逻辑与) 优先级高于||(逻辑或)
1、return a && b || c
根据a来判断返回值,a是false则肯定返回c;如果b , c都是true,那么就可以根据a来决定b还是c,如果a是false则返回c,如果a是true则返回b。
2、return a || b && c
根据优先级相当于先算b && c ,然后和a相或;如果a是true,则返回a,不论是b或c,如果a是false,则如果b是false,返回b,如果b是true,返回c。
运算符优先级的记法
C语言把除了控制语句和输入输出以外的几乎所有的基本操作都作为运算符处理,可见其范围的宽(如:将赋值符“=”作为赋值运算符、方括号作为下标运算符)。
优先级与求值顺序无关。如a+b && b*c,虽然*优先级最高,但这个表达式求值顺序是从左到右。优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。
相同优先级中,按结合性进行结合。大多数运算符结合性是从左到右,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。
基本的优先级需要记住:指针最优,单目运算优于双目运算。如正负号。先算术运算,后移位运算,最后位运算。逻辑运算最后结合。
以上内容参考 百度百科--运算符优先级