-1

这是我在 WndProc 的 C# 应用程序覆盖中的行之一:

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

是否有可能抛出算术异常?

4

1 回答 1

1

不,它不会抛出异常,但您需要充分了解右移运算符的算术细节;将保留最高位符号位(如果LParam是单值),并且将long值截断为short; 最高 48 位将被删除,其余 16 位将仅返回。

于 2017-01-28T04:31:34.843 回答