输出
5
6
7
为什么第一次打印5而不是6? return语句不应该像它返回的那样递增吗?
public class Bravo
{
protected static int varBravo = 5;
protected static int add()
{
return varBravo++;
}
}
public class Alpha
{
public static void main(String[] args)
{
System.out.println(Bravo.add());
System.out.println(Bravo.add());
System.out.println(Bravo.add());
}
}
我得到“预期”行为的唯一时间是我
varBravo++;
return varBravo;
打印
6
7
8
答案 0 :(得分:3)
return varBravo++;
做的是它首先执行语句(返回),然后递增变量。要实现你想要的(增量,然后返回),你可以做上面提到的:
varBravo++;
return varBravo;
或:
return ++varBravo;
这会增加变量,然后执行语句。
答案 1 :(得分:0)
啊经典的预增量后增量问题。 x++
增加x
,但返回的值是增量前x
的值。
答案 2 :(得分:0)
原因是您使用的是return varBravo++
而不是return ++varBravo
。 varBravo++
记住值,增加变量,然后返回记住的值,而++varBravo
首先递增变量,然后返回其值。
答案 3 :(得分:0)
不确定我是否正确。返回后,++运算符可能会被执行。试试return (varBravo++)
。不确定Java是否有++varBravo
,这是你在C中的表现。