2017-01-28 16 views
-1

これは、WndProcメソッドのC#のアプリのオーバーライドで私が午前ラインの一つである:でき、この式のスロー例外

int hiWord = unchecked((short)((long)m.LParam >> 16)); 
if (hiWord != 0) 
{ 
    // do something 
} 

それは算術例外をスローすることがあることは可能ですか?

答えて

1

いいえ、それは例外をスローしませんが、右シフト演算子の算術の詳細を完全に理解する必要があります。 (LParamが歌われた値である場合)最高位の符号ビットが保持され、longの値はshortに切り捨てられます。最上位48ビットは削除され、残りの16ビットは返されます。

+0

キャストが短くて長くなるとオーバーフローが発生する理由を説明できますか? –

+0

@LeonHavin長い間から長い間にキャストにオーバーフローはなく、切り詰めです。私は正しいシフト演算子 '>>'の符号ビットを指し示そうとしていたので、私の答えを編集し、単語のオーバーフローを取り除いた。 –

関連する問題