![](/img/trans.png)
[英]How to supress C# warning CS0675 : Bitwise-or operator used on a sign-extended operand
[英]How to properly refactor C# Bitwise-or operator usage in order to get rid off Compiler Warning (level 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
我知道可以通過強制修復來解決此問題,但是會感謝有位運算符經驗的人這樣做以確保它是正確的。
這確實是一個編譯器錯誤,已經報告並修復了該錯誤(我發現它只是為了發現它已被修復而已報告)。 參見按位或運算符在一個符號擴展的操作數中在視覺工作室2015
但是,如果您想同時解決該問題,可以按照以下方式進行修復:
bi_buf;
int bi_valid;
int value;
....
bi_buf = (short)((int)bi_buf | (int)((value << bi_valid) & 0xffff))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.