亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

類型轉換的問題?

類型轉換的問題?

ibeautiful 2018-11-26 16:13:43
short t =1;  t = t +1;  // 編譯報錯 需要顯示轉換short t =1;  t +=1; //正確請問這兩個有什么區別
查看完整描述

2 回答

?
桃花長相依

TA貢獻1860條經驗 獲得超8個贊

根據C#語言規范4.0第7.17.2節:

7.17.2 復合賦值

x op= y 形式的運算是這樣來處理的:應用重載決策(第 7.2.4 節),就好比運算的書寫形式為 x op y。然后,

  1. 如果選定的運算符的返回類型可“隱式”轉換為 x 的類型,則運算按 x = x op y 計算,但 x 只計算一次

  2. 否則,如果選定運算符是預定義的運算符,選定運算符的返回類型可“顯式”轉換為 x 的類型,并且 y 可“隱式”轉換為 x 的類型或者該運算符是移位運算符,則運算按 x = (T)(x op y) 計算(其中 T 是 x 的類型),但 x 只計算一次。

  3. 否則,復合賦值無效,且發生綁定時錯誤。

t += 1符合第2條。而t = t + 1會編譯報錯是因為:t + 1運算是一個byte加上一個int,因此它的結果是一個int,將一個大小未知的int值直接賦給一個byte類型的變量是不允許的。


查看完整回答
反對 回復 2018-11-30
?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

(t+1).GetType() 這個是int類型的,所以要顯示轉換

這么說吧;+ 是左結合,就是從右向左結合,遇到1為int類型,所以t+1結果轉換為int類型了

  +=是右結合,即從左向右,遇t是short類型,之后的1則轉換為short類型,結果為short類型


查看完整回答
反對 回復 2018-11-30
  • 2 回答
  • 0 關注
  • 616 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號