奇怪的java行为
谁能解释一下
int i=2;
int j=+-i;//-+i;
在 +-i
或 -+i
情况下 j=-2
的值。
这在 Java 中可以吗?或者这应该是一个编译器错误?
提前谢谢。
Can anyone explain me this
int i=2;
int j=+-i;//-+i;
the value of j=-2
in either case of +-i
or -+i
.
Is this fine in Java ? or should this be a compiler error?
Thankx in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
没关系 - 你刚刚将两个一元运算符放在一起。所以它是:
或者
参见 第 15.15.3 节< /a> 和 15.15.4。
It's fine - you've just got two unary operators together. So it's either:
or
See sections 15.15.3 and 15.15.4 of the JLS for these two operators.
这绝对没问题。浏览一下java中的一元运算符
两种情况都是相似的,以不同顺序执行相同操作,最终结果保持相同!
This is absolutely fine. Go through the Unary Operators in java
Both the cases are similar, the ultimate result stays same with the same operations performed in different order!!
可以这样想:
int j = +i
对应于int j = i
。因此,-+i
或+-i
将是-i
。just think of it this way:
int j = +i
would correspond toint j = i
. Therefore,-+i
or+-i
would be-i
.您将两个一元运算符应用于
i
:与
-+i
等效且类似。结果与否定
i
相同,除非i
等于Integer.MIN_VALUE
(在这种情况下,j
结束等于i
)。You're applying two unary operators to
i
:is equivalent to
and similarly for
-+i
. The outcome is the same as negatingi
unlessi
is equal toInteger.MIN_VALUE
(in which casej
ends up equal toi
).