簡體   English   中英

如何正確重構C#按位或運算符的使用情況,以擺脫編譯器警告(級別3)CS0675

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM