Short, Int, 加加減減

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

short x = 32767;
x = x + 2;

但是在 C# 則會得到

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

要改成

x = (short)(x +2);

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

x += 2;

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