• ベストアンサー

シフト演算の結果の型

シフト演算の結果の型は、左オペランドの型ということを聞きました。 この左オペランドの型というのは算術型変換をしてからのか、する前の型なのかどちらなのでしょうか? 例えば int a = -2; unsigned int b = 1; a >> b このときの結果の型は何になるのでしょうか? 算術型変換が起きる前のintになるのか? それとも算術型変換が起きるた後のunsigned intになるのか? 例文としてはおかしい点もあるかもしれませんが よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

シフト演算の場合は、まず左右のオペランドが汎整数拡張されます。そして、結果の方は拡張された左オペランドの型になります。四則演算などとは異なり、通常の算術型変換は起きませんので注意してください。 これは、CでもC++でも同じです。

coco_75
質問者

補足

回答ありがとうございます。 四則演算などとは異なるのですか。型変換は複雑なのでかなり勉強が必要ですね。

その他の回答 (2)

  • a987654
  • ベストアンサー率26% (112/415)
回答No.2

たぶんC言語と推察します。(言語位ははっきりさせましょう。) ヒントのみ。 1.演算前のaとbおよび演算後のaとbをバイナリで表示するか印刷して   みて考えてください。 2.C言語では代入時に型変換がおこなわれます。

coco_75
質問者

お礼

c言語です。書いていなくてすみません。 時間のある時によく考えてみます。ありがとうございます。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

>算術型変換が起きた後のunsigned intになるのか? 算術型変換が起きた後の型がunsigned intになると思った理由を教えてください。

coco_75
質問者

補足

http://www9.plala.or.jp/sgwr-t/detail/TypeConversion.html の3.通常の算術型変換で一方が unsigned int なら、他方を unsigned int に型変換する。 とあったからです。

関連するQ&A