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

&& || 的问题

&& || 的问题

月亮岛Superman 2018-11-28 15:57:30
int i = 0; System.out.println(i++ < 0 || i++ > 0 && i++ < 0); System.out.println(i);  //3System.out.println(true || true && false); //true问题:这里的i为什么是3System.out.println(true || true && false); //true可以看出 && 的优先级高于 ||i++ < 0 || i++ > 0 && i++ < 0--->i++ <0 || false    //i=1--->false    //i=2程序打印结果为3,个人认为是2,为什么?
查看完整描述

1 回答

?
marsYun

TA贡献7条经验 获得超3个赞

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

https://img1.sycdn.imooc.com//5bfe67670001195a06630349.jpg

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

添加回答

举报

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