Java操作数用法

时间:2013-11-11 15:41:09

标签: java

int a = 3;
int b = (a=2)*a;
int c = b * (b=5);
System.out.println("a=" + a + " b=" + b + " c=" + c);

有人可以解释为什么输出是:

a=2 b=5 c=20

而不是

a=2 b=4 c=20

4 个答案:

答案 0 :(得分:2)

因为assignment is an operator returns the new value it set,并且虽然它通常优先于最后,但括号在非括号运算符之前将其向上移动。可以这样想:

  1. a设为3。
  2. a设置为2,返回2.然后乘以a new 值,即2,将b设置为4
  3. 4(旧b)乘以b=5的结果,即5 b现在为5,c设为{{1} }} value(20)。

答案 1 :(得分:1)

您已在第二个语句中将b重新分配给5。因此,b将为5,直到再次分配为止。这有什么困扰你?

答案 2 :(得分:1)

您在第三行中为b分配5。所以,这就是它所包含的内容。

答案 3 :(得分:1)

b因为这个是5(b = 5);

a因为这个(a = 2)

是2 由于这个4 *(b = 5),

c是20;