首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >bVariable = !!iVariable与bVariable = (iVariable != 0)

bVariable = !!iVariable与bVariable = (iVariable != 0)
EN

Stack Overflow用户
提问于 2019-02-23 02:07:27
回答 5查看 137关注 0票数 2

我必须维护一个相当老的Visual C++源代码的大型代码库。我找到了如下代码:

代码语言:javascript
运行
复制
bIsOk = !!m_ptr->isOpen(some Parameters)

bIsOk的数据类型为boolisOpen(..)返回BOOL (定义为int)

工程师告诉我,据说这是从BOOLbool的最有效的方法。

这是正确的吗?现在还是这样吗?2019年?

EN

Stack Overflow用户

发布于 2019-02-23 02:15:08

假设你要赋值给一个bool,这样的转换已经被编译器隐式地完成了,所以“双击”在这里是没有用的。

如果需要从表达式中的BOOL获取bool,“规范化”BOOL (或类似的东西)仍然很有用。在现代编译器上,我希望它能生成与!= 0相同的代码,唯一的优点是它的类型更少(特别是考虑到一元!具有很高的优先级,而对于!=,您可能需要添加括号)。

票数 1
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54832788

复制
相关文章

相似问题

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