DOBON.NET DOBON.NETプログラミング掲示板過去ログ

"Bitwise-or 演算子が sign-extended オペランドで。。。"の警告について

環境/言語:[WinXP、C#、Framework2.0]
分類:[.NET]

お世話になっております。

下記のように記述するとコンパイル時に警告で
"Bitwise-or 演算子が sign-extended オペランドで使用されています。まず、小さい符号なしの型をキャストしてみてください。"
がでるのですが、どうすればでなくなるのでしょうか?

short型のs2を(int)でキャストしたのですが警告はでなくはならなかったです。
・・・警告の内容もいまいちなにをすればよいかわかりません。

動作自体は期待していた挙動でした。
ご存知の方がいらっしゃいましたら、ご教授宜しくお願いします。

--------------------------------
static void Main(string[] args)
{
short s1 = 1;
short s2 = 2;
int i1 = s1 << 16;
int i2 = i1 | s2;

Console.WriteLine(i2.ToString());
}
こんにちは。

とりあえずリファレンス。
http://msdn2.microsoft.com/ja-jp/library/wdc6717a.aspx

これによれば、OR 演算子を使っている部分での暗黙の拡張が怪しいと言われているようですね。
親切にも「まず、小さい符号なしの型をキャストしてみてください」と言われているわけで、言われるままに「小さい符号なしの型をキャスト」してみてください。

int i2 = i1 | (ushort)s2;

こんな感じで。
返信ありがとうございます。

解決しました。

ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板