- ベストアンサー
シフト演算の結果の型
シフト演算の結果の型は、左オペランドの型ということを聞きました。 この左オペランドの型というのは算術型変換をしてからのか、する前の型なのかどちらなのでしょうか? 例えば int a = -2; unsigned int b = 1; a >> b このときの結果の型は何になるのでしょうか? 算術型変換が起きる前のintになるのか? それとも算術型変換が起きるた後のunsigned intになるのか? 例文としてはおかしい点もあるかもしれませんが よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
シフト演算の場合は、まず左右のオペランドが汎整数拡張されます。そして、結果の方は拡張された左オペランドの型になります。四則演算などとは異なり、通常の算術型変換は起きませんので注意してください。 これは、CでもC++でも同じです。
その他の回答 (2)
- a987654
- ベストアンサー率26% (112/415)
回答No.2
たぶんC言語と推察します。(言語位ははっきりさせましょう。) ヒントのみ。 1.演算前のaとbおよび演算後のaとbをバイナリで表示するか印刷して みて考えてください。 2.C言語では代入時に型変換がおこなわれます。
質問者
お礼
c言語です。書いていなくてすみません。 時間のある時によく考えてみます。ありがとうございます。
- asuncion
- ベストアンサー率33% (2127/6289)
回答No.1
>算術型変換が起きた後のunsigned intになるのか? 算術型変換が起きた後の型がunsigned intになると思った理由を教えてください。
質問者
補足
http://www9.plala.or.jp/sgwr-t/detail/TypeConversion.html の3.通常の算術型変換で一方が unsigned int なら、他方を unsigned int に型変換する。 とあったからです。
補足
回答ありがとうございます。 四則演算などとは異なるのですか。型変換は複雑なのでかなり勉強が必要ですね。