为了账号安全,请及时绑定邮箱和手机立即绑定

&& || 的问题

/ 猿问

&& || 的问题

月亮岛Superman 2018-11-28 15:57:30

int i = 0;
System.out.println(i++ < 0 || i++ > 0 && i++ < 0);
System.out.println(i);  //3
System.out.println(true || true && false); //true

问题:这里的i为什么是3

System.out.println(true || true && false); //true

可以看出 && 的优先级高于 ||

i++ < 0 || i++ > 0 && i++ < 0

--->i++ <0 || false    //i=1

--->false    //i=2

程序打印结果为3,个人认为是2,为什么?

查看完整描述

1 回答

?
marsYun

因为i++在执行运算前,变量i就自增1了

https://img2.mukewang.com/5bfe67670001195a06630349.jpg

查看完整回答
反对 回复 2018-11-28
  • 月亮岛Superman
    月亮岛Superman
    不是很明白为什么会这样,个人认为 step1:i++ > 0 step2:i++ < 0 || false 可否详细解释下原因,或者贴个链接 为什么i++在执行运算前会自增
  • marsYun
    marsYun
    因为一般的算法都是从做到右啊,而且也没有括号,凭什么会跳过呢?
  • marsYun
    marsYun
    那个i++我说错了,是先运算,算完后再自增1。不过和我画图的TF没有影响了。虽然&&的优先级大于||,但是从左到右这个也是运算法则之一

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信