-1
これは、WndProcメソッドのC#のアプリのオーバーライドで私が午前ラインの一つである:でき、この式のスロー例外
int hiWord = unchecked((short)((long)m.LParam >> 16));
if (hiWord != 0)
{
// do something
}
それは算術例外をスローすることがあることは可能ですか?
これは、WndProcメソッドのC#のアプリのオーバーライドで私が午前ラインの一つである:でき、この式のスロー例外
int hiWord = unchecked((short)((long)m.LParam >> 16));
if (hiWord != 0)
{
// do something
}
それは算術例外をスローすることがあることは可能ですか?
いいえ、それは例外をスローしませんが、右シフト演算子の算術の詳細を完全に理解する必要があります。 (LParam
が歌われた値である場合)最高位の符号ビットが保持され、long
の値はshort
に切り捨てられます。最上位48ビットは削除され、残りの16ビットは返されます。
キャストが短くて長くなるとオーバーフローが発生する理由を説明できますか? –
@LeonHavin長い間から長い間にキャストにオーバーフローはなく、切り詰めです。私は正しいシフト演算子 '>>'の符号ビットを指し示そうとしていたので、私の答えを編集し、単語のオーバーフローを取り除いた。 –