Java 意外递增

Java Unexpected Incrementing

输出

5

6

7

为什么第一个打印的是 5 而不是 6? return 语句不应该随着它的 returned 递增吗?

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());
    }
}

我唯一一次出现 "expected" 行为是当我有

varBravo++;

return varBravo;

打印

6

7

8

啊经典的前置自增post-自增题。 x++ 增量 x,但返回的值是 x 增量之前的值。

return varBravo++; 所做的是首先执行语句 (return),然后递增变量。要实现您想要的(递增,然后 return),请执行您上面提到的任一操作:

varBravo++;
return varBravo;

或:

return ++varBravo;

这会增加变量,然后执行语句。

原因是您使用的是 return varBravo++ 而不是 return ++varBravovarBravo++ 记住值,增加变量,然后 returns 记住值,而 ++varBravo 先增加变量,然后 returns 它的值。

不确定我是否正确。 ++ 运算符有可能在 return 之后执行。尝试 return (varBravo++)。不确定 Java 是否有 ++varBravo,这就是你在 C 中的做法。