簡體   English   中英

奇怪的Java行為

[英]Strange java behaviour

誰能向我解釋一下

int i=2;
int j=+-i;//-+i; 

+-i-+i任何一種情況下, j=-2的值。

Java很好嗎? 還是應該是編譯器錯誤?

提前感謝。

很好-您只有兩個一元運算符。 所以是:

int j = +(-i);

要么

int j = -(+i);

有關這兩個運算符,請參見JLS的15.15.315.15.4

絕對好 通過Java中的一元運算符

兩種情況都是相似的,但最終結果與以不同順序執行的相同操作相同!

只是這樣想: int j = +i對應於int j = i 因此, -+i+-i將是-i

您正在將兩個一元運算符應用於i

int j = +-i;

相當於

int j = +(-i);

同樣適用於-+i 結果與否定i相同,除非i等於Integer.MIN_VALUE (在這種情況下, j最終等於i )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM