short s = 1; s = s + 1;
這個編譯一定是不通過的,會提示損失精度。
short s = 1; s += 1;
這個編譯反而可以通過。
隱式類型轉換可以由小到大自動轉,即byte →short →int →long,如果反過來會損失精度,必須進行顯式類型轉換。
s+=1的意思與s=s+1不同
s=s+1這句話先執行s+1,然后把結果賦值給s,因為1是int類型,所以s+1的值就成了int型,這叫自動類型提升。
編譯器自動進行了隱式類型轉換,所以將一個int類型的值賦給了short就會出錯。
而s+=1不同由于是+=操作符,在解析的時候s+=1就等價于s=(short)(s+1),也就是說s+=1?s=(s的類型)(s+1)
浙公網安備 33010602011771號