short s=1;s=s+1; short s=1;s+=1; 有區別麼?? 如果有的話區別是什麼? 沒有的話值是多少?

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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章