黑马程序员技术交流社区

标题: 本人甚是愚钝,就逻辑紊乱了,我感觉就是真&&假||假。结果为假啊? [打印本页]

作者: runsunlife    时间: 2015-8-14 18:17
标题: 本人甚是愚钝,就逻辑紊乱了,我感觉就是真&&假||假。结果为假啊?
已知 x=45, y=’a’, z=0; 则表达式(x>=z && y<’z’ || !y)的值是(    )。
A.0                                   B.语法错
C.1                                   D.“假”

作者: Eil.tea    时间: 2015-8-14 18:18
x>z假,  0是48,y<z,假,!y是假。。。。都是假啊,假&&假||假。。。难道是真的么。。。
作者: Eil.tea    时间: 2015-8-14 18:20
补充一点,即便是真&&假||假,结果也是假啊,真&&假 是假,假||假。。。。是吧
作者: runsunlife    时间: 2015-8-14 19:10
Eil.tea 发表于 2015-8-14 18:20
补充一点,即便是真&&假||假,结果也是假啊,真&&假 是假,假||假。。。。是吧 ...

我也是这么以为的。答案写的是1真。我就纠结了。砸破脑袋也觉得是0
作者: 庐山烟雨浙江潮    时间: 2015-8-14 19:29
这个确实是1
x>=z  45 > 0 为真   值为 1
y<’z’'a'的ASCII值=97, 'z'的ASCII值=122;所以 y < 'z' 为真,值为  1
!y y为真,!y 即为假。  
1 && 1 || 0 = 1
作者: runsunlife    时间: 2015-8-14 21:50
庐山烟雨浙江潮 发表于 2015-8-14 19:29
这个确实是1
x>=z  45 > 0 为真   值为 1
y

一句惊醒了。被题给忽悠了。还以为是0的值呢。拜谢。
作者: wanghui001001    时间: 2015-8-14 22:12
庐山烟雨浙江潮 发表于 2015-8-14 19:29
这个确实是1
x>=z  45 > 0 为真   值为 1
y

!y都不用算,按照逻辑运算符的短路,||之前都为真,后面就不用看,答案就是真,为1
但是  !y  怎么算,字符取反是什么啊?
作者:  神马都是浮云    时间: 2015-8-14 22:54
wanghui001001 发表于 2015-8-14 22:12
!y都不用算,按照逻辑运算符的短路,||之前都为真,后面就不用看,答案就是真,为1
但是  !y  怎么算,字 ...

相当于 'a'的asc码65取非 就是 0 。!0为真 ,!(0以外的数)为假
作者: wanghui001001    时间: 2015-8-14 23:50
 神马都是浮云 发表于 2015-8-14 22:54
相当于 'a'的asc码65取非 就是 0 。!0为真 ,!(0以外的数)为假

喔,谢谢哈,就是还是看ascii码就对了
作者: wanghui001001    时间: 2015-8-14 23:55
 神马都是浮云 发表于 2015-8-14 22:54
相当于 'a'的asc码65取非 就是 0 。!0为真 ,!(0以外的数)为假

还有a的ascii码是97喔~
作者: wangchao1992    时间: 2015-8-15 08:58
围观学习
作者:  神马都是浮云    时间: 2015-8-16 12:06
wanghui001001 发表于 2015-8-14 23:55
还有a的ascii码是97喔~

嗯....哈哈哈
作者: 408205555    时间: 2015-8-16 20:02
x=45, y=’a’, z=0;
由上得出'a'的ascii码值是97,'z'的ascii码值是112
表达式(x>=z && y<’z’ || !y)
A&&B:如果A假,B就不执行了
A||B :如果A真,B就不执行了

所以x>=z && y<’z’是真的,真值为1。
既然为真 || 后面的代码就不执行了
作者: yushimin763    时间: 2015-8-16 21:54
学习了啊
作者: fersh    时间: 2015-8-16 22:00
[quote]庐山烟雨浙江潮 发表于 2015-8-14 19:29
这个确实是1
x

正解,确实如此
作者: MEIMEIAA    时间: 2015-8-16 22:32
学习了,长知识了
作者: 飓风少年    时间: 2015-8-16 22:45
感觉是加,看看一下结合律就可以了
作者: Edware    时间: 2015-8-16 23:38
wanghui001001 发表于 2015-8-14 22:12
!y都不用算,按照逻辑运算符的短路,||之前都为真,后面就不用看,答案就是真,为1
但是  !y  怎么算,字 ...

或运算有真即为真,如果前边的已经为真后边的就不执行判断。还有就是非0为真,其他的非数都为假。
作者: bianning888    时间: 2015-8-17 00:21
这个明显是真了,主要你是搞错z=0和'z'了吧
作者: woxingwosu    时间: 2015-8-17 09:14
确实长知识了
作者: water828    时间: 2015-8-17 10:51
这题的坑就是’z’
作者: yumei9    时间: 2015-8-17 11:54

x>=z  45 > 0 为真   值为 1
y<’z’'a'的ASCII值=97, 'z'的ASCII值=122;所以 y < 'z' 为真,值为  1
!y y为真,!y 即为假。 !97 为 0 , 非真为假,只有!0 才为真
1 && 1 || 0 = 1
作者: 红双喜    时间: 2015-8-17 18:48
乍一看 我也蒙。
作者: chensc    时间: 2015-8-17 19:28
学习学习!
作者: qqikufei    时间: 2015-8-17 20:08

确实长知识了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2