C++;处理及&;?(短路评估) < P>遇到(BoOL&& BOOL2)时,如果BoL1被发现是错误的,C++是否曾经试图检查布尔2,或者它是否以PHP的方式忽略它? 对不起,如果它是一个问题的基础,但我真的找不到一个在SHILLT和Internet上都不能提出来的问题。 < P>是的,C++中的和< /COD>操作符使用,如果 BoOL1评估为 false ,不麻烦评估 BOOL2 < < /P>

C++;处理及&;?(短路评估) < P>遇到(BoOL&& BOOL2)时,如果BoL1被发现是错误的,C++是否曾经试图检查布尔2,或者它是否以PHP的方式忽略它? 对不起,如果它是一个问题的基础,但我真的找不到一个在SHILLT和Internet上都不能提出来的问题。 < P>是的,C++中的和< /COD>操作符使用,如果 BoOL1评估为 false ,不麻烦评估 BOOL2 < < /P>,c++,short-circuiting,and-operator,logical-and,C++,Short Circuiting,And Operator,Logical And,“短路评估”是一个花哨的术语,你可以在谷歌上搜索并在索引中查找 |运算符也会发生同样的情况,如果bool1计算结果为true,则整个表达式将计算结果为true,而不计算bool2 >无论如何,你要使用所有的表达式,你可以使用和 >代码> 操作符。< < > > & & < /COD> C++中的操作符短路。如果代码>布尔O1>代码>在你的例子中是错误的,布尔O2>代码>将不被检查/执行。 < P> C++使用短路逻辑,所以如果布尔1 < /代码>是错误的,它不需要检查bool2 如果bool2

“短路评估”是一个花哨的术语,你可以在谷歌上搜索并在索引中查找

|
运算符也会发生同样的情况,如果
bool1
计算结果为
true
,则整个表达式将计算结果为true,而不计算
bool2


<> >无论如何,你要使用所有的表达式,你可以使用<代码>和<代码> >代码> <代码>操作符。< < > > & & < /COD> C++中的操作符短路。如果代码>布尔O1>代码>在你的例子中是错误的,<代码>布尔O2>代码>将不被检查/执行。

< P> C++使用短路逻辑,所以如果<代码>布尔1 < /代码>是错误的,它不需要检查
bool2

如果bool2实际上是一个返回bool的函数,或者使用指针,则此选项非常有用:

if ( pointer && pointer->someMethod() )

如果没有短路逻辑,它将在取消对空指针的引用时崩溃,但如果使用短路逻辑,它工作正常。

这称为短路评估

是C++中的一个短路运算符,如果布尔1是假,它将不计算布尔2。< / P > < P>这是正确的(短CICUIT行为)。但请注意:如果调用的运算符不是内置运算符,而是用户定义的

运算符&&
(与
运算符| |
相同),则短路会停止


您指的是。我认为它可能是编译器特有的,但是我链接的文章显示它是语言特定的,C++确实坚持。如果它确实是特定于编译器的,我无法想象一个编译器会不遵循它。我目前使用的日常编译器VS 2008确实如此。基本上它将遵循运算符优先级,一旦条件结果得到保证,

短路求值表示某些编程语言中某些布尔运算符的语义,在这种语言中,仅当第一个参数不足以确定表达式的值时才执行或求值第二个参数:例如,当AND函数的第一个参数求值为false时,总体值必须为false;当OR函数的第一个参数计算为true时,整个值必须为true


<>在C++中,两个和&和算子都使用短路评价。

但短路并不局限于本机类型。将转换重载为bool(或safe bool)而不是
操作符&
使这项工作很好。有趣。我不知道。你知道标准中定义这一点的章节/文本吗?这是正确的。我将尝试重新表述我的答案。使用或| | | |操作符也使用短路评估。不同之处在于,给定一个表达式
bool1 | | bool2
,当
bool1
的计算结果为
false
时,
bool2
也将被计算。您能确定
指针
将在
指针->somethod()之前被计算吗?