首先来看一下,第一段代码的执行结果为true。分析:后置--运算在后,先计算11/3=3,此时结果为true。再将x做--运算x==10。
public class Test {
public static void main(String[] args) {
int x=11;
System.out.println(x--*1/3==3);
}
}
再来看第二段代码,第一次打印时,++x的整体结果与3做比较,值相等,结果为真;第二次打印时,用x与3做比较,值相等,结果为真;第三次打印时,双等号左边是用x去比较,而双等号右边也是用x去做比较,刚开始我认为的结果为true,然而双等号右边x实际为x++后的x,此时右边的x值为5,而左边的x值为4,所以结果为false;第四次打印时,双等号左边是用++x去做比较,双等号右边相对于也是用++x去做比较,此时结果为true。
第一次打印:true
第二次打印:true
第三次打印:false
第四次打印:true
public class Test2 {
public static void main(String[] args) {
int x = 2;
System.out.println(++x == 3);
System.out.println(x++ == 3);
System.out.println(x++ == x);
System.out.println(++x == x);
}
}