int a=1;
int b=0;
int c=2;
int x=a != (a=c) ? a : b;
答案:x=2
原因:jvm虚拟机加载优先级。
总结:最开始自己没有经过详细的思考,直接就说 x=1,结果答案一出来就傻眼了。之后经过分析:jvm在编译的时候就已经把1、0、2复值给了a、b、c,
在执行x的赋值的时候:
①a != () 这时a=1这个数加载进来了
②a=c 这时a这个容器中装的就是2了
③? a : b 这时才加载这个条件运算符
最后的运行逻辑就是
x=1 != 2 ? 2 : 0;
答案就是 x=2