为什么会有这样的结果呢

yiyangqianxiww 2019-08-21 09:06:40
第一个输出结果是46,第二个输出结果是22
...全文
212 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
朝夕在指间 2019-08-25
  • 打赏
  • 举报
回复
卧槽怎么不能撤回的,打错了误人子弟了,是短路或‖,大声跟我读:喝污喔或,短路或‖
朝夕在指间 2019-08-25
  • 打赏
  • 举报
回复
这里他的意思是,第一个if将y赋为true,所以第二个if的第一个条件y==true正确,这里用了短路与‖,短路与的作用就是前面只要有一个条件正确,就不会执行后面的条件,可以提高效率,所以后面的条件并没有执行,直接执行z++,所以z为22
y_feeling 2019-08-23
  • 打赏
  • 举报
回复
引用 5 楼 yiyangqianxiww 的回复:
[quote=引用 1 楼 y_feeling的回复:]第一个 ((z++==42)&&(y=true)) z++; y从false变成true所以正确则z++然后在自加 ,所以z=44; ((x=false)||(++z==45)) 这里z已经是45因为先自加,然后z++;所以z=46 第二个 ((x==true)&&(y=true)) ,y从false变成true所以正确则z++然后在自加 ,所以z=21; if((y==true)||(++z==22)) 先自加z=22,但是判断失败所以z=22
想问问第二个自加等于22后,为什么判断失败呢,[/quote] 我看成与操作了。。。
y_feeling 2019-08-22
  • 打赏
  • 举报
回复
哦哦对对对对,我看成与了抱歉
a_b_a_b_a_b_a_b 2019-08-22
  • 打赏
  • 举报
回复
引用 1 楼 y_feeling 的回复:
第一个
((z++==42)&&(y=true)) z++; y从false变成true所以正确则z++然后在自加 ,所以z=44;
((x=false)||(++z==45)) 这里z已经是45因为先自加,然后z++;所以z=46
第二个
((x==true)&&(y=true)) ,y从false变成true所以正确则z++然后在自加 ,所以z=21;
if((y==true)||(++z==22)) 先自加z=22,但是判断失败所以z=22

我感觉第二个分析的有点问题啊;
if((x==true)&&(y=true)) ,y从false变成true所以正确则z++然后在自加 ,所以z=21;
if((y==true)||(++z==22)) 这个里面的或判断,y==true是真,所有直接进入if里面的语句了,执行了z++;所以z=22;
qq_28143557 2019-08-22
  • 打赏
  • 举报
回复
原来if还可以这样写,小白受教了
yiyangqianxiww 2019-08-22
  • 打赏
  • 举报
回复
引用 1 楼 y_feeling的回复:
第一个 ((z++==42)&&(y=true)) z++; y从false变成true所以正确则z++然后在自加 ,所以z=44; ((x=false)||(++z==45)) 这里z已经是45因为先自加,然后z++;所以z=46 第二个 ((x==true)&&(y=true)) ,y从false变成true所以正确则z++然后在自加 ,所以z=21; if((y==true)||(++z==22)) 先自加z=22,但是判断失败所以z=22
想问问第二个自加等于22后,为什么判断失败呢,
y_feeling 2019-08-21
  • 打赏
  • 举报
回复
第一个 ((z++==42)&&(y=true)) z++; y从false变成true所以正确则z++然后在自加 ,所以z=44; ((x=false)||(++z==45)) 这里z已经是45因为先自加,然后z++;所以z=46 第二个 ((x==true)&&(y=true)) ,y从false变成true所以正确则z++然后在自加 ,所以z=21; if((y==true)||(++z==22)) 先自加z=22,但是判断失败所以z=22

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧