Java操作数用法
有人能解释一下为什么输出是:Java操作数用法,java,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设置为3 a设置为2,返回2。然后乘以a的新值,即2,将b设置为4 4(旧的b)乘以b=5的结果,即5b现在是5,而c被设置为4x5值(20) 因为它通常是
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
设置为3a
设置为2,返回2。然后乘以a
的新值,即2,将b
设置为4b
)乘以b=5的结果,即5b
现在是5,而c
被设置为4x5
值(20)
a
设置为3a
设置为2,返回2。然后乘以a
的新值,即2,将b
设置为4b
)乘以b=5的结果,即5b
现在是5,而c
被设置为4x5
值(20)
在第二条语句中,您已将
b
重新分配给a 5。因此,b
将为5,直到再次分配为止。这其中的哪一部分让您感到困惑?您在第二个语句中将b
重新分配给了a 5。因此,b
将为5,直到再次分配为止。这其中的哪一部分让您感到困惑?您在第三行将5分配给b。这就是它所包含的内容。在第三行中,您将5赋值给b。所以,这就是它包含的内容。b是5,因为这个(b=5)
因此a为2(a=2)
c是20,因为这4*(b=5) b是5,因为这(b=5)
因此a为2(a=2)
c是20,因为这4*(b=5) 哦,现在我明白了。我忘了第二项作业。我问了这么愚蠢的问题……哦,现在我明白了。我忘了第二项作业。我问了一个如此愚蠢的问题..@Cruncher我不认为这是一个比较作业,只是一个误解scope@inquisitiveIdiot哦,我都没看那么近。我刚刚看到一个表达式中的
b=5
,有点assumed@Cruncher我不认为这是一个比较,只是一个误解scope@inquisitiveIdiot哦,我都没看那么近。我刚刚看到一个表达式中的b=5
,有点像是假设的
a=2 b=4 c=20