运算符的结果优先级是如何定义的?
1个回答
展开全部
1.先算!x,结果为0;
2.再算y--,结果为1,y的值变为0;
3.再算逻辑或||,0或1,结果为1。所以最后结果为1
优先级:自减运算符>逻辑非运算符>逻辑或。
基本的优先级需要记住:
指针最优,单目运算优于双目运算,如正负号。
先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 & 7等价于 (1 << (3 + 2))&7。
逻辑运算最后结合。简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符。
扩展资料:
运算符计算的时候还要注意左结合性和右结合性:
C语言中各运算符的结合性分为两种:左结合性和右结合性。
例如:算术运算符的结合性是自左至右,即先左后右。
如有表达式x-y+z则y应先与“-”号结合,执行x-y运算,然后再执行+z的运算。这种自左至右的结合方向就称为“左结合性”。
而自右至左的结合方向称为“右结合性”。 最典型的右结合性运算符是赋值运算符。如x=y=z,由于“=”的右结合性,应先执行y=z再执行x=(y=z)运算。
C语言运算符中有不少为右结合性,应注意区别,以避免理解错误。(上文的优先级有分辨左右结合性)。
参考资料:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询