[英]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.