注册 登录
编程论坛 C++教室

请教一个小小的问题!

xuyu950403 发布于 2011-08-24 17:03, 441 次点击
!(a+b)+c-1&&b+c/2;
这个逻辑表达式为什么值为1,我怎么算出得0?谁推理下?谢谢!
a=3,b=4,c=5


[ 本帖最后由 xuyu950403 于 2011-8-24 17:27 编辑 ]
5 回复
#2
voidx2011-08-24 17:23
至少你也告诉大家 a, b 和 c 的值啊
不然没法算
#3
icecream2352011-08-24 17:55
!后面要加个括号
#4
Luminal2011-08-25 13:09
a=3,b=4,c=5
!(a+b)+c-1&&b+c/2;

这里只是涉及到一个运算符优先级的问题,其实很简单的
&& 运算符比+-*/的要低,所以,该题如果写成这样:
(!(a+b)+c-1)&&(b+c/2);
大家就一目了然了,事实上其求值顺序也是如此,建议看看关于运算符优先级的相关知识!
#5
hoy0a1d2011-08-25 13:45
!(a+b)+c-1&&b+c/2;

括号运算级最高

!(a+b)+c-1&&b+c/2;

!(3+4)+5-1&&4+5/2;

!(3+4) = 0;

即 0+5-1&&4+5/2;

4 && 6 = 1;



#6
Hujc712011-08-25 15:15
你要熟悉优先级,相信会很简单的!
1