关于i++和++i以及&&的逻辑

来源:互联网 发布:软件著作权年限 编辑:程序博客网 时间:2024/05/22 03:25

题目来源:https://zhuanlan.zhihu.com/p/27431652?utm_source=com.tencent.tim&utm_medium=social
题目1:

class Happy {    public static void main(String args[])     {         int i = 1 ;             int j = i++ ;         if((i==(++j))&&((i++)==j))     {             i += j ;         }         System.out.println("i = "+i);     }}

计算流程:
1. 第3行结束:i=1;
2. 第4行结束:i=2;j=1;//i先赋复制给j,后执行i=i+1;
3. 第5行结束:i=3;j=2;//j先加1,然后判断i==j,为true。接着判断(i++) ==j,先判断i==j,后i加1。整个结果为true。
4. 第6行结束:i=5;j=3;//没什么好说的。
5. 最后结果:输出5.
题目2:

public static void main(String args[]) {            boolean flag = 10%2 == 1 && 10 / 3 == 0 && 1 / 0 == 0 ;            System.out.println(flag ? "aliyunedu" : "yootk") ;}

这道题巨坑,如果不了解&&的规则,会很郁闷。
10%2==1,为false,所以后续两个不用判断,flag为false。
结果出来了,输出:yootk

原创粉丝点击