问题
I need to get the 30th bit of the lParam param passed with the WM_KEYDOWN message. This bit as written here allows me to know if the key was pressed before. Is this code right to get it?
(lParam >> 30) & 1
回答1:
I would just use lParam & 0x40000000
. If that's non-zero, then b30
was set (I consider that the thirty first bit of the thirty two, by the way). And there's more likelihood that it will be a {logical-and, compare}
operation rather than {shift, logical-and, compare}
.
Mind you, there's a good chance that a decent compiler would generate the more efficient code anyway even if you used (lParam >> 30) & 1
but why take the risk?
来源:https://stackoverflow.com/questions/6176566/get-30th-bit-of-the-lparam-param-in-wm-keydown-message