簡體   English   中英

Java 前綴增量運算符(++i)結果類型

[英]Java prefix increment operator (++i) result type

JLS狀態:

如果移位運算符以外的 integer 運算符至少有一個long類型的操作數,則使用 64 位精度執行運算,並且數值運算符的結果為long類型。 如果另一個操作數不是long ,則首先將其擴展( §5.1.5 )以通過數字提升( §5.6 )鍵入long

否則,使用 32 位精度執行運算,數值運算符的結果為int類型。 如果任一操作數不是int ,則首先通過數字提升將其擴展為int類型。

但是,當我嘗試時:

byte b = 18;
print(++b);
static void print(int a) {
    System.out.println("Integer : " + a);
}

static void print(byte a) {
    System.out.println("Byte : " + a);
}

結果是:

字節:19

我期待以 integer 類型作為輸入參數的方法被調用。

其他 integer 運算符如一元加或一元減實際上返回 integer。

++運算符不會更改類型。

其他運營商做。

byte b = 1;
b = b + 1; // java: incompatible types: possible lossy conversion from int to byte

暫無
暫無

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

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