這可能是問某處,但我找不到它。有人可以澄清爲什麼此代碼編譯並打印出1
?奇怪的java行爲與強制轉換爲原始類型
long i = (byte) + (char) - (int) + (long) - 1;
System.out.println(i);
這可能是問某處,但我找不到它。有人可以澄清爲什麼此代碼編譯並打印出1
?奇怪的java行爲與強制轉換爲原始類型
long i = (byte) + (char) - (int) + (long) - 1;
System.out.println(i);
它被解析爲這樣:
long i = (byte)(+(char)(-(int)(+(long)(-1))));
,所有的+
和-
運營商是一元+
或-
。
在這種情況下,1
被否定兩次,所以它打印爲1
。
因爲'+'和' - '都是unary operators,並且演員們正在操作這些單目操作符。其餘的是數學。
一元運算符和鑄造:)
1是合法的
(字節)+ 1鑄造1爲一個字節。
偷偷摸摸!讓我想到。
這裏有什麼奇怪的東西? –
@PrinceJohnWesley:好吧,它看起來很奇怪,不是嗎?儘管答案很簡單,並且我在發佈問題後立即明白了。 –
*我認爲它看起來很奇怪;我沒有任何問題認爲有人會看這個,不相信它甚至是合法的Java。 –