2 回答

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊
根據(jù)C#語(yǔ)言規(guī)范4.0第7.17.2節(jié):
7.17.2 復(fù)合賦值
x op= y 形式的運(yùn)算是這樣來(lái)處理的:應(yīng)用重載決策(第 7.2.4 節(jié)),就好比運(yùn)算的書寫形式為 x op y。然后,
如果選定的運(yùn)算符的返回類型可“隱式”轉(zhuǎn)換為 x 的類型,則運(yùn)算按 x = x op y 計(jì)算,但 x 只計(jì)算一次
否則,如果選定運(yùn)算符是預(yù)定義的運(yùn)算符,選定運(yùn)算符的返回類型可“顯式”轉(zhuǎn)換為 x 的類型,并且 y 可“隱式”轉(zhuǎn)換為 x 的類型或者該運(yùn)算符是移位運(yùn)算符,則運(yùn)算按 x = (T)(x op y) 計(jì)算(其中 T 是 x 的類型),但 x 只計(jì)算一次。
否則,復(fù)合賦值無(wú)效,且發(fā)生綁定時(shí)錯(cuò)誤。
t += 1符合第2條。而t = t + 1會(huì)編譯報(bào)錯(cuò)是因?yàn)椋簍 + 1運(yùn)算是一個(gè)byte加上一個(gè)int,因此它的結(jié)果是一個(gè)int,將一個(gè)大小未知的int值直接賦給一個(gè)byte類型的變量是不允許的。

TA貢獻(xiàn)2016條經(jīng)驗(yàn) 獲得超9個(gè)贊
(t+1).GetType() 這個(gè)是int類型的,所以要顯示轉(zhuǎn)換
這么說(shuō)吧;+ 是左結(jié)合,就是從右向左結(jié)合,遇到1為int類型,所以t+1結(jié)果轉(zhuǎn)換為int類型了
+=是右結(jié)合,即從左向右,遇t是short類型,之后的1則轉(zhuǎn)換為short類型,結(jié)果為short類型
- 2 回答
- 0 關(guān)注
- 608 瀏覽
添加回答
舉報(bào)