a=a+1;的簡單問題

問題:

//////////////
short a=1;
a=a+1;

這個不可以編譯通過很好理解,1是int型,a+1的運算結果是int型,不可以強制轉換成short型。
///////////////


再看:
///////////////////
short a=1;
a+=1;
這個可以編譯通過,爲什麼?到底a+=1是怎麼進行運算的?

/////////////////////

 

 

很簡單...+=中的+是根據左操作數類型推斷結果類型的,它會自動將默認的int型1轉換爲short型1...

short a=1;
a+=32767;//編譯可以通過...

short a=1;
a+=32768;//編譯就不能通過了,而且你注意看錯誤信息,常量值“327678”無法轉換爲“short”...

你可以看一下IL代碼...

short a=1;
a=(short)(a+1);



short a=1;
a+=1;

是完全一樣的...也就是說+=會自動轉換類型,但是這種轉換隻能是可以隱式轉換的類型...

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