A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 随性自然 中级黑马   /  2017-3-10 11:47  /  2940 人查看  /  22 人回复  /   2 人收藏 转载请遵从CC协议 禁止商业使用本文

今天看了一道题,解出来的答案和给的答案不一样,但是找不到自己错哪了?大神帮忙看看。

来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端

22 个回复

倒序浏览
你也没说你想要什么答案啊……
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
ApePlanet 发表于 2017-3-10 11:52
你也没说你想要什么答案啊……

我做出来的答案是5,但系统给的答案是6,不好意思,忘记写答案了
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
答案就是6,因为你的i++没带大括号,不算是if语句的,条件判断玩依然会执行,应该是这样的
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
anyupeng 发表于 2017-3-10 12:18
答案就是6,因为你的i++没带大括号,不算是if语句的,条件判断玩依然会执行,应该是这样的
...

我加了大括号答案还是6,你看if语句后面没有分号,说明i++本来就是if语句一体的,跟大括号无关!
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
不管你加不加大括号,条件为ture,语句就会执行,第一个if里,你是把stste赋值给了ture,所以该if为ture,加大括号,if值也会执行
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
天涯丿过客 发表于 2017-3-10 13:04
不管你加不加大括号,条件为ture,语句就会执行,第一个if里,你是把stste赋值给了ture,所以该if为ture, ...

前面已经定义了state是错的,判断肯定也是错的,怎么还会重新赋值呢?
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
回复 使用道具 举报
要知道你的判断条件是 state=true ,是一个赋值语句,并不是 state==true 的判断语句, 当然会返回true,这道题考的是细心,要放到工作中这种问题可能耗费你一整天时间,别问我为什么知道
回复 使用道具 举报
xiaoxiaoyuxie 发表于 2017-3-10 14:38
要知道你的判断条件是 state=true ,是一个赋值语句,并不是 state==true 的判断语句, 当然会返回true,这道题 ...

太对了,真是一语点醒梦中人啊!太感谢你了!
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
回复 使用道具 举报
if((++i > 2) && (state == true)) 跟 if((++i > 4) || (state == false)) 就算你改成了判断语句,最终结果也是6. && 跟 || 具有短路效果。
回复 使用道具 举报
mrwalker 发表于 2017-3-11 10:09
if((++i > 2) && (state == true)) 跟 if((++i > 4) || (state == false)) 就算你改成了判断语句,最终结果 ...

你意思后面state不用判断吗?短路不是这样的吧!
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
mrwalker 发表于 2017-3-11 10:09
if((++i > 2) && (state == true)) 跟 if((++i > 4) || (state == false)) 就算你改成了判断语句,最终结果 ...

我在电脑上测试了你的方法,答案是5。你自己再看看
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
states==false
回复 使用道具 举报
随性自然 发表于 2017-3-11 21:43
我在电脑上测试了你的方法,答案是5。你自己再看看

不好意思,是我搞错了。(++i > 2) && (state == true),只有(++i > 2) 为false时,(state == true)这个才不会执行。&& 跟 || 有短路效果,这个是没错的
回复 使用道具 举报
newu 黑马帝 2017-3-12 09:33:38
17#
学习了,真是长知识
回复 使用道具 举报
受教了.以后真得小心了,要不一个小小的问题得浪费半天时间 .
回复 使用道具 举报
mrwalker 发表于 2017-3-12 07:43
不好意思,是我搞错了。(++i > 2) && (state == true),只有(++i > 2) 为false时,(state == true)这个才 ...

且只有第一个假才有短路,或只有第一个真才有短路,并不是任何时候都有短路效果,这样才是深刻理解。
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
小T 中级黑马 2017-3-13 08:32:11
20#
可能你的是假电脑,我的运行就是6
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马