1

мне нужно изменить следующий код, поэтому он не будет производить предупреждение компилятора:Как правильно реорганизовать C# побитовое или оператора использования, чтобы избавиться от компилятора Предупреждение (уровень 3) CS0675

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 

Я понимаю, что это можно исправить путем литья, но понятно, кто-то опытный с оператором побитового, чтобы сделать это, чтобы убедиться, что это правильно.

+0

Связанный: http://stackoverflow.com/questions/31542256 В основном это ошибка компилятора. .. –

+0

Никаких признаков этого предупреждения в VS2015 RTM, обновите свою версию VS. –

+0

Я пробовал использовать VS2015 RTM, и он ведет себя так же хорошо. – Hayk

ответ

0

Это действительно ошибка компилятора, о которой сообщалось и исправлено (я сообщил об этом только для того, чтобы найти, что она уже исправлена). См 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)) 

 Смежные вопросы

  • Нет связанных вопросов^_^