Short, Int, 加加減減

在 C 裡面,我們可能不小心寫出這樣的 code 而不自覺會造成 overflow

#a71d5d;">short x #a71d5d;">= #0086b3;">32767;
x #a71d5d;">= x #a71d5d;">+ #0086b3;">2;

但是在 C# 則會得到

error CS0266: Cannot implicitly convert type 'int' to 'short'. \
       An explicit conversion exists (are you missing a cast?)

要改成

x #a71d5d;">= (#a71d5d;">short)(x #a71d5d;">+#0086b3;">2);

才行;
不過神奇的是,如果寫成

x #a71d5d;">+= #0086b3;">2;

則不會有任何問題的直接 overflow… 這究竟是什麼樣的設計考量呢?


已發佈

分類:

,

作者:

標籤: