class C{
static int f1(int i) {
System.out.print(i + ",");
return 0;
}
public static void main (String[] args) {
int i = 0;
i = i++ + f1(i);
System.out.print(i);
}
}
Run Code Online (Sandbox Code Playgroud)
怎么回答是1,0.请解释.
看表达式:
i = i++ + f1(i);
Run Code Online (Sandbox Code Playgroud)
你需要理解的一件事是确切地i++
做什么和返回:它递增i
,但返回旧的值i
.因此,如果i == 0
,则i++
递增i
到1
,但表达式的结果值为0
.
在Java中,表达式从左到右进行计算.所以在上面的表达式中,i++
先评估,然后再评估f1(i)
.
之后i++
,实际上也是i == 1
如此.此方法打印后面带逗号的值,然后返回.f1(i)
f1(1)
i
1
0
由于i++
返回旧值i
(在递增之前),表达式变为:
i = 0 + 0;
Run Code Online (Sandbox Code Playgroud)
第一个0
是结果i++
,第二个0
是结果f1(i)
.所以,i
被分配0
.最后,打印出值i
.