黑马程序员技术交流社区

标题: 爸爸妈妈们我就是来问问的为什么这题答案是这个!!!! [打印本页]

作者: 寻心人偶    时间: 2016-3-13 11:07
标题: 爸爸妈妈们我就是来问问的为什么这题答案是这个!!!!
1.执行以下语句后,y 的值为(    )。

int x,y,z;

x=y=z=0;

++x || ++y && ++z;
运行了之后y的值是:0,为啥呀!!!
作者: itheimaly    时间: 2016-3-13 11:13
不知道,这是什么鬼
作者: 从心开始のBean    时间: 2016-3-13 14:27
布吉岛啊, 好难的样子
作者: 叫我超哥    时间: 2016-3-13 16:00
逻辑运算符的短路问题
作者: 叫我超哥    时间: 2016-3-13 16:11
++x || ++y && ++z
++x || (++y && ++z)
整个表达式是一个逻辑或表达式;
结果遵从一真则真的原则;
只要第一个表达式为真,后面的就不参与运算,更谈不上什么返回值;
所以x有返回值为1;
y,z仍为0。
我也刚学,只能解释成这样了。

作者: 无色无味    时间: 2016-3-13 17:37
逻辑或的短路问题 ++x为1了 后面的都不执行了
作者: 寻心人偶    时间: 2016-3-13 23:47
叫我超哥 发表于 2016-3-13 16:11
++x || ++y && ++z
++x || (++y && ++z)
整个表达式是一个逻辑或表达式;

谢谢了大兄弟,你也是深圳校区的吗?
作者: 寻心人偶    时间: 2016-3-13 23:48
无色无味 发表于 2016-3-13 17:37
逻辑或的短路问题 ++x为1了 后面的都不执行了

大兄弟,谢谢了哈
作者: wx_MkPtTU4D    时间: 2016-3-14 00:31
逻辑或前面成立就不执行后面的了,所以就y没有自增
作者: 寻心人偶    时间: 2016-3-14 22:53
wx_MkPtTU4D 发表于 2016-3-14 00:31
逻辑或前面成立就不执行后面的了,所以就y没有自增

谢了,之后师兄也帮我讲解了。思路跟你是一样的
作者: 赵国政    时间: 2016-3-15 00:24
来签到啦!




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