3 回答

TA貢獻1796條經驗 獲得超7個贊
只需將 char 轉換為 ASCII 代碼(在您的語句下方)
int x = '0' + 1 - '5'
48 + 1 - 53 = -4
int y = '5' - 0 + '1'
53 - 0 + 49 = 102
int y = '5' - '0' + '1'
53 - 48 + 49 = 54
注意它是一致的,每個 int 保持 int 并且每個 char 都轉換為 ASCII 碼

TA貢獻1725條經驗 獲得超8個贊
char '0'
不等于int 0
。char '0'
的二進制表示占用 16 位:
0000 0000 0011 0000
whileint 0
的二進制表示占用 32 位:
0000 0000 0000 0000 0000 0000 0000 0000
當您將 achar
和 an相加時int
,char
將提升為int
第一個。
例如。char5
的unicode是0035
,在 binary 中0000 0000 0011 0101
,它會通過在頭部插入 16 個零來提升為 int 0000 0000 0000 0000 0000 0000 0011 0101
,而 int53
用十進制表示。

TA貢獻1831條經驗 獲得超4個贊
您可能正在混合值中的表示。這些值永遠不會改變,因此當您執行算術運算時,它將始終是 '5'==53 而不是 5。對于在原語到字符串轉換上顯示 JLS。
對于大多數計算,整數算術被提升為 int。
System.out.println('5' + '0');
>>> 101
System.out.println((char)('5' + '0'));
>>> e
兩個結果具有相同的數值,但其中一個顯示為字符,因為它已轉換為字符。
添加回答
舉報