C语言题很简单但我还是不会?速,今晚啊?

来源:百度知道 编辑:UC知道 时间:2024/05/24 12:55:12
设a=3,b=4,c=5,则表达式a||b+c&&b==c的值是___1____
为什么是1,
书上说逻辑运算符有左结合性啊.怎么先算&&再算||

a==3,所以a>0,由于||的短路求值作用,所以||右边的部分将不再计算,所以整个表达式的值就是1

*************************************

|| 的结合性是从左到右的,先从左边开始计算。

这个优先级的差别并不是能改变运算符的结合性,它们的结合性就是从左向右的,而||的优先级低于&&的意思也不是说这个式子的计算要从 ||的左边开始,而是说在不加括号的情况下(例如 a||b&&c)它会计算a的值之后会再去计算b&&c的值最后再计算a||(b&&c)的值,而在计算的过程中计算顺序始终是从左向右的。

*************************************

http://zhidao.baidu.com/question/32186375.html

有另外一位网友在2007-8-2提过一个同类型的问题,请参考上文。

先是算术运算再是逻辑

+ = && ||

这个运算顺序~

b+c得到9
b==c得到0
9&&0得到0
a||0得到1

你的什么书呃,运算顺序是
!逻辑非 算术运算 关系运算 && 逻辑与 || 逻辑或 赋值运算

||这个一真则真,另一个是一假则假〉