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)