繁体   English   中英

有人可以解释为什么答案是B? 我正在使用Java,我不明白

[英]Can someone explain why the answer is B? I'm using Java and I don't understand

以下哪项陈述相同?

(I)x - = x + 4

(II)x = x + 4 - x

(III)x = x - (x + 4)

A.(I)和(II)是相同的

B.(I)和(III)是相同的

C.(II)和(III)是相同的

D.(I),(II)和(III)是相同的

x -= y is equivalent to x = x - y

因此

x -= x + 4

相当于

x = x - (x+4)

所以假设(II) x = x - (x + 4)应该是(III) x = x - (x + 4) (因为你有两个选项标记为(II) ), (I)(III)是相同的。

这是因为运营商的优先权。 Java评估它就好像它一样

x - =(x + 4)

所以它首先计算(x+4)和然后减去从x -这是什么-的一部分-=指-然后更新x ,这是什么=部装置。

  • 情况(I)根据Java -=运算符扩展到x = x - (x + 4),
    并在数学上简化为x = -4。
  • 情况(II)在数学上简化为x = 4。
  • 情况(III)在数学上简化为x = -4。

因此(I)和(III)是相同的,这意味着答案是(B)。

-=是所谓的复合赋值。

这些只是捷径,并结合原子操作。

x -= y代表x = xy

x += y代表x = x+y

x++代表x = x+1

x--代表x = x-1

还有++ x和--x与x ++ / x--相同,只是它们递增/递减之前返回x的值。

官方Java教程:

“您还可以将算术运算符与简单赋值运算符组合以创建复合赋值。例如,x + = 1;并且x = x + 1;两者都将x的值递增1。”

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html

我认为同样适用于*=/=%=

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM