[英]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
,这是什么=
部装置。
-=
运算符扩展到x = x - (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.