Is (bool | bool) safe?
Is (bool | bool) safe?
我正在写一些C++代码,我想调用两个函数(checkXDirty
和checkYDirty
),如果其中一个返回true
,则返回true
。我需要评估两者,即使其中一个返回true
,所以我的第一个想法是使用
return checkXDirty() | checkYDirty();
这看起来有点奇怪(也许是脏的)。这在C++中总是产生正确的结果吗?使用_Bool
类型的C呢?(这段代码最终可能会适用于任何一种语言,我不希望在移植代码时出现不愉快的意外)。
我需要评估两者,即使其中一个返回true,所以我的第一个想法是使用。。。
然后,不要再刁钻了,尽量减少代码的行数。只需调用这两个函数,并明确需要调用它们:
const bool x_dirty = is_x_dirty();
const bool y_dirty = is_y_dirty();
return x_dirty || y_dirty;
接下来,重命名或拆分您的函数,因为is_xxx_dirty
确实不应该产生副作用。因此,您的代码更难维护
只要值不是不确定的,从技术上讲,使用逐位运算符是可以的。然而,由于作为通用编码习惯,这充满了问题,因此我只会编写一个小的内联OR函数,并让编译器进行优化。编译器擅长优化,所以,顺其自然吧
return eitherOrBothTrue( checkXDirty(), checkYDirty() );
或者,如果你很大胆,敢于接受向维护人员解释代码的挑战,
return !bothFalse( checkXDirty(), checkYDirty() );
或者现在我读到了@EdS的答案,也许只将值存储在变量中同样好,但要添加const
,就像这样:
bool const xIsDirty = checkXDirty();
bool const yIsDirty = checkYDirty();
return xIsDirty || yIsDirty;
相关文章:
- 写入向量<向量<bool>>
- C++长双大"safe"整数
- 让bool方法返回其他整数
- 如何在 std::vector 中找到<bool>哪些索引是真的?
- Arduino-C++ bool 不会从 false 变为 true
- 有没有"safe" static_cast选择?
- 为什么在这种情况下,bool 类型的输出等于 0?
- 显式 std::exception_ptr 转换为 bool 不存在.VS2010 错误?
- 错误:不能使用"显式"说明符声明 bool'
- 为什么 C++ 11 在 ios 类中添加了运算符 bool
- 从标准::字符串到标准::矢量<bool>的快速转换
- 为什么 bool 和 _Bool 如果它们在内存中占用 1 个字节,它们只能存储 0 或 1
- 通过 mpi 发送 c++ 标准::矢量<bool>
- 为什么使用Pool和Bool而不是int8_t或char
- 如何以" Safe "的方式获取 C++ 中的当前时间
- 如何为地图< map<int,int> 、bool > 分配值?
- 为什么更改包含 psapi.h 的顺序会产生编译错误?(标识符 BOOL 未定义)
- 使用 bool 和 const char 重载的 C++ 函数会在没有警告的情况下产生歧义 (MSVC2012)
- 返回 bool 作为 CPP 中 bool 运算符 [] 中的值
- Is (bool | bool) safe?