自逻辑和
Self logical and?
本文关键字:逻辑和 更新时间:2023-10-16
答案对你们中的一些人来说可能是显而易见的,但由于我找不到答案,我需要问它。通常,如果一个函数必须返回所有是否都执行了没有问题,我会使用一个布尔值来跟踪任何故障。
bool myFunction()
{
bool ok = true;
if (...) {
if (...) {
ok = ...;
}
ok = ok && (...);
}
ok = ok && (...);
return ok;
}
由于不存在&&=
,我经常使用这种语法:ok = ok && (...)
((...)
可以是条件或值)。但我觉得这很不优雅。有没有C++符合标准的方法可以更简洁、更优雅地编写它?
您可以将&=
与布尔标志一起使用:
bool myFunction()
{
bool ok = true;
if (...) {
if (...) {
ok &= ...;
}
ok &= ...;
}
ok &= ...;
return ok;
}
只需提前返回,因为如果ok
变得false
,则不会执行其他代码:
bool myFunction()
{
bool ok = true;
if (...) {
if (...) {
if (!...) return false;
}
if (!...) return false;
}
return (...);
}
这是异常优于错误代码的另一个原因:如果不处理它们,则不会对正常代码路径进行意大利面条化代码。
尝试使用:
&=
而不是 &&=
您可以使用相等&=
运算符,因为 bool 是 1 位类型,并且所有算术运算符都有效。
或者,
您可以选择不使用返回值。
传入用于成功或失败的对象或函数指针。
例如,带有对象:
void onConditionOtherwise(BooleanAction& action)
{
if (...) && (...) {
action.success();
} else {
action.failure();
}
}
执行此操作的最标准方法是在条件不满足时返回 false,否则在方法结束时返回 true。所以实际上你甚至不需要那个布尔变量。
就这样用吧:
bool myFunction()
{
if (...) {
} else return false;
return true;
}
如果您坚持使用布尔值,请使用 &= 运算符。
相关文章:
- C/C++ 中的逻辑否定和赋值运算符?
- 是否允许分配器构造和销毁成员函数从内部逻辑引发异常?
- 为什么使用 2 个嵌套循环 O(n^2) 复杂度来解决二和问题,当只改变循环计数器逻辑时运行得更快?
- 为什么带有逻辑和运算符以及增量运算符的 c++ 程序给出的输出与预期不同?
- 首先处理第二个和第三个堆与第一个和第二个堆之间的逻辑差异
- 为什么同一个逻辑方程在python和c++中返回两个不同的结果
- 为什么按位 OR 和 AND 逻辑无法按预期工作?
- 在C++中实现的感知器没有按预期进行训练.(和逻辑门示例)
- 关于括号、布尔逻辑和'n'
- 如何在 AVX2 中实现车道交叉逻辑逐位移位/旋转(左和右)
- 在查找子集中元素和元素数量之间的二进制比较背后的逻辑是什么?
- 使用逻辑和/或无条件/分支
- 实现简单的逻辑和延迟模拟器
- 如何使用常见的C 业务逻辑和数据访问层构建跨平台移动应用程序
- 自逻辑和
- 如何使用逻辑和 c++
- 在Qt小部件中分离应用程序逻辑和视图
- C++逻辑&&和||运营商
- 惰性逻辑和临时值来提高表达式的可读性
- 关于从内存中释放链表的析构函数的逻辑和作用域的问题