第一题
int x = 1,y = 1;
//++后缀式 先取值在自加 前缀式 先自加在比较
if(x++==2 & ++y==2) { //&它会将整个式子计算后在者到结果 x =7;
}
System.out.println("x="+x+",y="+y); x=2 y=2 --------------------------------------------------- 第二题
int x = 1,y = 1;
//&& 如果可以通过第一个表达式确定整个式子结果,后面式子就不会在运算。 if(x++==2 && ++y==2) {
x =7; }
System.out.println("x="+x+",y="+y); x=2 y=1 ---------------------------------------------------
第三题
int x = 1,y = 1;
if(x++==1 | ++y==1) {
x =7;
}
System.out.println("x="+x+",y="+y); x=7 y=2 ---------------------------------------------------
第四题 int x = 1,y = 1;
if(x++==1 || ++y==1) {
x =7;
}
System.out.println("x="+x+",y="+y); x=7 y=1
int x = 1,y = 1;
//++后缀式 先取值在自加 前缀式 先自加在比较
if(x++==2 & ++y==2) { //&它会将整个式子计算后在者到结果 x =7;
}
System.out.println("x="+x+",y="+y); x=2 y=2 --------------------------------------------------- 第二题
int x = 1,y = 1;
//&& 如果可以通过第一个表达式确定整个式子结果,后面式子就不会在运算。 if(x++==2 && ++y==2) {
x =7; }
System.out.println("x="+x+",y="+y); x=2 y=1 ---------------------------------------------------
第三题
int x = 1,y = 1;
if(x++==1 | ++y==1) {
x =7;
}
System.out.println("x="+x+",y="+y); x=7 y=2 ---------------------------------------------------
第四题 int x = 1,y = 1;
if(x++==1 || ++y==1) {
x =7;
}
System.out.println("x="+x+",y="+y); x=7 y=1
++x在运行之之前x+1,该值返回的是x+1
这两个运算符,在if判读里面,如果第一个表达式成立,就不用操作第二个表达式了,例如第二题:
if(x++==2 && ++y==2),这里是与的关系,先判读第一个x++=2不成立,与的关系只要一个不成立,整个if表达式就不成立,所有不会再执行第二个表达式,也就是++y=2了。第四题,if(x++==1 || ++y==1)这里是或的关系,先判读第一个x++=1成立,或的关系里,只要有一个成立,真个if表达式就成立,所有不用再判读执行第二个表达式,也就是++y=1了&,|
而这两个运算符判读的时候,不管第一个表达式能不能确定最终结果,都会执行第二个表达式,例如第一题,
if(x++==2 & ++y==2),首先x++=2,这里不成立,但执行玩只后x变成了2,再执行第二个表达式,++y=2,y先加1变成2,在判读,这个是成立的,但是由于第一个不成立,这里是与的关系,所有整个if不成立,不会执行花括号里面的x=7,所有最终结果是x=2,y=2剩下的楼主自己分析下吧,好难描述的。