[讨论]逻辑表达式
逻辑表达式:a||b+c && b-c
设a=3,b=4,c=5.
对于这个逻辑表达式我感觉应该是得0的
可为什么答案是1呢!
我的解释是`
a||b+c && b-c 根据优先等级应该先计算b+c 得到的结果是9,然后计算a||9的数得到的表达式是1
再计算后面的1&& b-c 也是一样算法等级高于||,计算得到结果是0,
然后计算1&&0 根据逻辑运算的真值表得到的不是0吗~~~为什么答案是1呢``大家来看下`
----------------解决方案--------------------------------------------------------
1&& b-c 这个b-c不是等于-1吗,怎么会是0???
1 && -1是等于1啊
有错吗
个人理解
----------------解决方案--------------------------------------------------------
额``我知道了 谢谢LS的
----------------解决方案--------------------------------------------------------
以下是引用魔城侠客在2007-10-30 9:10:30的发言:
1&& b-c 这个b-c不是等于-1吗,怎么会是0???
1 && -1是等于1啊
有错吗
个人理解
1&& b-c 这个b-c不是等于-1吗,怎么会是0???
1 && -1是等于1啊
有错吗
个人理解
完全正确
----------------解决方案--------------------------------------------------------
这个例子虽然是先算&&,但你可以看到这个题目的结果是由||前的值来决定的.
所以不用去算后面的,直接看到a=3所以表达式的值是1.
----------------解决方案--------------------------------------------------------
龙龙说的好象有问题,这里是: a||b&&c啊,难道不是"自左到右"么
----------------解决方案--------------------------------------------------------
|| 和 &&运算符是很聪明的``
||前面有值为真(非0)``它就不管后面了``因为不关后面是什么``这个表达式都是真(非0)
&&前面有值为假(0)``.....................................................假(0)
----------------解决方案--------------------------------------------------------
顶楼上的,和我的想法完全一样
----------------解决方案--------------------------------------------------------
-
以下是引用C语言的深度在2007-10-30 8:51:30的发言:
-
逻辑表达式:a||b+c && b-c
设a=3,b=4,c=5.
对于这个逻辑表达式我感觉应该是得0的
可为什么答案是1呢!
我的解释是`
a||b+c && b-c 根据优先等级应该先计算b+c 得到的结果是9,然后计算a||9的数得到的表达式是1
再计算后面的1&& b-c 也是一样算法等级高于||,计算得到结果是0,
然后计算1&&0 根据逻辑运算的真值表得到的不是0吗~~~为什么答案是1呢``大家来看下`
要知道运算符的优先级!~~
&&的优先级高于||
先计算b+c=9
在计算b-c=-1
比较9&&-1..为真"1"
最后a||1比较.
结果为真"1"
[此贴子已经被作者于2007-10-30 19:57:20编辑过]
----------------解决方案--------------------------------------------------------
以下是引用psp0375在2007-10-30 18:09:23的发言:
龙龙说的好象有问题,这里是: a||b&&c啊,难道不是"自左到右"么
看清楚啊,我说的是&&的优先级比||高,所以先做(b&&c),但这里因为a=3所以直接可以判断整个表达式是1.
但计算机还是会先处理b&&c的.
----------------解决方案--------------------------------------------------------