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);
}
}
怎么回答是1,0。 请解释一下。
答案 0 :(得分:5)
看表达式:
i = i++ + f1(i);
您需要了解的一件事是i++
确实做了什么并返回:它会增加i
,但会返回{strong>旧值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;
第一个0
是i++
的结果,第二个0
是f1(i)
的结果。因此,i
被分配了0
。最后,打印i
。
答案 1 :(得分:2)
i = i++ + f1(i);
首先我增加到1并调用 f1(1)然后打印 i,,打印 1,并返回0通过计算 0 + 0 在main方法的 i 中存储,然后在main中打印,输出变为 1,0