这段代码结果46的来龙去脉?(语言-java)

img


这段代码结果46的来龙去脉?
为什么结果会是46
解释每段代码的含义

public static void main(String[] args) {
     boolean x = true;
     boolean y = false;
     short z = 42;//z=42
     if((z++==42)&&(y=true))z++;//z++==42此时z还没有完成自增,所以判断时仍然为42,条件满足,
     //后面的y=true是一个赋值操作,赋值完成后判断,所以整个条件都满足,则z自增一次为43,执行完成后条件z++==42也会完成一次自增44
     if((x=false)||(++z==45))z++;//同上面,x=false也是赋值操作,++z==45,前置++优先级高,完成自增为45后判断,满足条件,则z再自增一次为46
     System.out.println("z=" + z);
}

但凡你跑一下程序都不会来问了.答案是44.