異なる型どうしを演算しようとすると、結果はサイズが大きいほうの型で
返ってくるのが一般的だというのは感覚的にわかっているのですが。。。
double型 + int型 = double型 みたいな。
で、short+shortの結果をshort型に入れようとすると、エラーになってびっくりした。
short x = 5;
short y = 12;
//ビルドエラー:型 'int' を型 'short' に暗黙的に変換できません
short z = x + y;
//キャストすればOK
short z = (short)(x + y);
調べると「代入演算子の右側にある算術式が既定で int に評価される」とヘルプに載ってた。
sbyte+sbyteも同様にintで返ってくるみたい。
こういう決まりを単項数値昇格とか二項数値昇格っていうらしい。
参考↓
int (符号付き 32 ビット整数:-2,147,483,648 ~ 2,147,483,647)
short(符号付き 16 ビット整数:-32,768 ~ 32,767)
sbyte(符号付き 8 ビット整数:-128 ~ 127)
この記事がお役に立ったようでしたらぜひクリックお願いしますm(_ _)m