首页 > 解决方案 > 是使用像 + 和 !! 这样的一元运算符吗?作为一些著名的 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等)可接受的类型转换习惯用法?如果是,请参考此类公开可用的代码约定。

标签: c++

解决方案


推荐阅读