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 ++varBravo
。 varBravo++
记住值,增加变量,然后 returns 记住值,而 ++varBravo
先增加变量,然后 returns 它的值。
不确定我是否正确。 ++ 运算符有可能在 return 之后执行。尝试 return (varBravo++)
。不确定 Java 是否有 ++varBravo
,这就是你在 C 中的做法。
输出
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 ++varBravo
。 varBravo++
记住值,增加变量,然后 returns 记住值,而 ++varBravo
先增加变量,然后 returns 它的值。
不确定我是否正确。 ++ 运算符有可能在 return 之后执行。尝试 return (varBravo++)
。不确定 Java 是否有 ++varBravo
,这就是你在 C 中的做法。