首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >位运算的CLion“表达式可以简化”消息

位运算的CLion“表达式可以简化”消息
EN

Stack Overflow用户
提问于 2018-06-06 05:30:56
回答 1查看 219关注 0票数 4

我当时正在做一个C项目,我写了下面这行代码来检查int8_t的最高有效位是否为1:

代码语言:javascript
复制
if (f & 0b10000000 == 0b10000000) {

然后CLion抛出了一个警告,告诉我‘表达式可以简化为’f != 0‘’

我可以说这是不正确的吗?我仔细阅读了按位运算,我仍然觉得这些不是等价的运算,例如f=1会在我的表达式中返回false,但这条消息让我怀疑自己。

感谢您所能提供的任何帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-06 05:38:06

==相比,按位"and“运算符&的优先级较低。

因此,您的表达式if (f & 0b10000000 == 0b10000000)等同于if (f & (0b10000000 == 0b10000000))

如果您只想测试第7位,请尝试if (f & 0b10000000)。任何非零值都将被视为"true“。

同样,是的: CLion是错的。原始表达式等同于if (f & 1),它测试0位(可能不是您想要的)。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50709228

复制
相关文章

相似问题

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