c++ - 是使用像 + 和 !! 这样的一元运算符吗?作为一些著名的 C++ 代码约定可以接受的类型转换习语?
问题描述
在这个问题中,我不会询问某人的主观意见——而是询问现代 C++ 文档的链接。
尤其是在遗留 C/C++ 代码中,我们会遇到大量使用逻辑一元运算符作为类型转换快捷方式的情况,比如!:
if(!finished) {/**/}
-
if(!!count == true) {/**/}
最后一个可能是为了消除编译器的警告而引入的(C4805:'==':'int' 类型和 'bool' 类型在操作中的不安全混合)。
或+用于将结果提升为整数:
std::cout << "uchar: "
<< + std::numeric_limits<unsigned char>::lowest();
另一方面,参考和约定建议避免这种依赖整数到布尔值转换的结构,而不是缩短if(count)冗长地写“更具可读性”:
if(count == true) {/**/}
是否使用一元运算符,例如+ , ! 和!!与更明确但更冗长的static_cast相比,作为一些著名的现代 C++ 代码约定(如Google C++ Style Guide等)可接受的类型转换习惯用法?如果是,请参考此类公开可用的代码约定。
解决方案
推荐阅读
- visual-studio-2017 - 通过迁移迁移到新的 VS2017 .csproj 格式
- postman - 在 Postman 中验证 JSON 模式
- git - 如何将 Unity3D 项目中的 SteamVR 资产添加到版本控制?
- java - 如何在没有模块的情况下升级到 Java 11?
- java - 如果 array 或 arrayList 引用前一个元素,我如何实现一个函数以返回 true?
- javascript - 如何防止客户端刷新页面?
- reactjs - React 组件可以渲染存储在其状态中的另一个组件吗?
- exact-online - 为 Exact Online 从 PHP 客户端库更新记录
- angular - Angular 7 - 访问服务返回未定义的 observable
- unity3d - Unity3d - 碰撞功能跳跃