我需要重构以下代码,因此它不会产生编译器警告:
short bi_buf;
int bi_valid;
int value;
....
bi_buf |= (short)((value << bi_valid) & 0xffff);
如果编译器警告级别设置为 3 或更高,则会产生以下错误:
Error CS0675 Bitwise-or operator used on a sign-extended operand; consider casting to a smaller unsigned type first
我知道这可以通过强制转换来解决,但会感谢有位运算符经验的人来确保它是正确的。