13.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);
}
}
运行完上面代码之后输出i的值是多少?
A. 4
B. 5
C. 3
D. 6
正确答案是:B
int i = 1 ;
int j = i++ ;
i++,先赋值在++,
走完此处
i=2 j=1
下一步
if((i==(++j))&&((i++)==j)){}
if的&&判断从左到右(i==(++j))
++j,先++在比较
此时j=2,i==j为true。
(提个题外话&&如果左边为false,则右边不会执行,此处可以挖坑,读题细心观察)
继续走((i++)==j))
i++,先比较在++,
此时i=2,i==j为true。进入if块前i++ , i=3
i += j ;
i=3,j=2,
最后i=3+2=5.
如果想用断点一步步 看结果,建议将if的&&拆开来写。代码如下
public static void main(String args[]) {
int i = 1 ;
int j = i++ ;
if((i==(++j))){
if(((i++)==j)){
i += j ;
}
}
System.out.println("i = "+i);
}