首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确重构C#位或运算符的用法,以摆脱编译器警告(第3级) CS0675

如何正确重构C#位或运算符的用法,以摆脱编译器警告(第3级) CS0675
EN

Stack Overflow用户
提问于 2015-08-04 14:42:39
回答 1查看 112关注 0票数 1

我需要重构下面的代码,这样它就不会产生编译器警告:

代码语言:javascript
复制
short bi_buf;
int bi_valid;
int value;
....
bi_buf |= (short)((value << bi_valid) & 0xffff);

如果编译器警告级别设置为3或更高,将产生以下错误:

代码语言:javascript
复制
Error   CS0675  Bitwise-or operator used on a sign-extended operand; consider casting to a smaller unsigned type first

我知道这是可以通过强制转换来修复的,但希望有经验的人使用按位操作符来做这件事,以确保它是正确的。

EN

回答 1

Stack Overflow用户

发布于 2015-10-08 08:21:59

这确实是一个编译器错误,已经被报告和修复(我报告了它,却发现它已经被修复了)。请参阅bitwise-or-operator-used-on-a-sign-extended-operand-in-visual-studio-2015

但如果你想在此期间解决它,你可以像这样修复它:

代码语言:javascript
复制
 bi_buf;
 int bi_valid;
 int value;
 ....
 bi_buf = (short)((int)bi_buf | (int)((value << bi_valid) & 0xffff))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31802397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档