フリーエンジニアである下っ端SEの備忘録と日記。日々是精進。 開発言語は主にC#。 開発技術が日々進化し続けている今日、取り残されまいとするも歳のせいか覚えが悪いSE。 ほったらかしですいません。

2009年09月17日

【C#】short型 + short型 = int型

異なる型どうしを演算しようとすると、結果はサイズが大きいほうの型で
返ってくるのが一般的だというのは感覚的にわかっているのですが。。。
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
ブログランキング

タグ :.NETC#

同じカテゴリー(C#)の記事画像
【C#】数字が入力されているかチェック
同じカテゴリー(C#)の記事
 [C#]日付チェック(スラッシュありなし両方対応) (2014-09-03 13:50)
 [C#]8桁の数字(文字列)をDateTime型に変換 (2014-07-07 18:59)
 フォーム上のテキストボックスコントロールを取得して入力チェック (2014-07-04 14:50)
 正規表現 (2011-01-24 15:29)
 【C#】decimal サフィックスのm (2010-03-15 16:07)
 【C#】ドロップダウンリストにListItemをAddする (2009-12-03 10:32)

Posted by ようすけ at 09:00│Comments(2)C#
この記事へのコメント
このエラーにハマってた所でした。
勉強になりました!
ありがとうございます。
Posted by のりお at 2011年08月21日 21:55
intなんか使ってないのに変だなと思って調べてここを見つけました。理由も書いてあってすっきりしました。ありがとうございます。
Posted by けいたろう at 2023年11月09日 15:44
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。