OR 语句执行所有评估
OR Statement performing all evaluations
在OR评估中,C++是否在它找到的第一个TRUE之后继续计算?
即。
if(Foo() || Bar())
{
//..
}
如果 Foo(( 返回 true,是否会完全跳过 Bar((,或者它也会运行该函数?
运算符 && 和 || 执行所谓的短路评估,这意味着如果在计算第一个操作数后知道结果,他们不会评估第二个操作数。所以不,在这种情况下不会评估Bar()
。
编辑:正如其他人所说,这是内置功能。如果它们超载,您显然不能再依赖它了。
内置
||
运算符短路。 左手表达式保证首先被计算,如果结果true
,则不计算右手表达式。
&&
运算符则相反。 首先计算左侧表达式,如果计算结果为 false
则不计算右侧表达式。
请注意,这不适用于用户定义的operator||
和operator&&
重载。 这些不提供短路评估。 将计算表达式的两边。
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- C++,系统无法执行指定的程序
- std::condition_variable::wait()如何评估给定的谓词
- 使用C++中的模板和运算符重载执行矩阵运算
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 执行函数时导致崩溃的变量
- 无论条件是否为true,if总是在c++中执行
- 当函数模板参数是具有默认参数的类模板时,函数模板参数的推导如何执行
- 在C++中对T*类型执行std::move的意外行为
- 使用QProcess执行命令,并将结果存储在QStringList中
- 如何在没有信号的情况下从C++执行QML插槽
- 如何确认我的constexpr表达式实际上已经在编译时执行
- C++17中的并行执行策略
- QML按钮点击功能执行顺序
- 程序在执行程序的其余部分之前退出
- 为什么catch中的代码没有被执行
- C++从其他 constexpr 创建 lambda 不能按顺序执行 Constexpr
- OR 语句执行所有评估
- 单步执行函数,但不进入VS2017的参数评估
- 每次在宏中使用时,都会执行/评估VC C++宏参数