我需要重构下面的代码,这样它就不会产生编译器警告:
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我知道这是可以通过强制转换来修复的,但希望有经验的人使用按位操作符来做这件事,以确保它是正确的。
发布于 2015-10-08 08:21:59
这确实是一个编译器错误,已经被报告和修复(我报告了它,却发现它已经被修复了)。请参阅bitwise-or-operator-used-on-a-sign-extended-operand-in-visual-studio-2015
但如果你想在此期间解决它,你可以像这样修复它:
bi_buf;
int bi_valid;
int value;
....
bi_buf = (short)((int)bi_buf | (int)((value << bi_valid) & 0xffff))https://stackoverflow.com/questions/31802397
复制相似问题