C++ 使用逻辑运算符而不使用任何条件语句或捕获变量
我在一些代码库中看到了一种“诗意的”代码。虽然它看起来很直截了当,但我只是想确认一下,它的方向是否正确。C++ 使用逻辑运算符而不使用任何条件语句或捕获变量,c++,output,logical-operators,sequence-points,C++,Output,Logical Operators,Sequence Points,我在一些代码库中看到了一种“诗意的”代码。虽然它看起来很直截了当,但我只是想确认一下,它的方向是否正确。 以非常简单的形式: bool foo (); bool bar (); int main () { foo() or bar(); // <--- line } 我知道调用所有语句的,运算符,但不确定或(相当于|)运算符。 在g++中测试时,它给出。如果第一个条件为真,则另一个条件不再被计算(在|的情况下),因此正如您所说的: if(foo() == false)
以非常简单的形式:
bool foo ();
bool bar ();
int main () {
foo() or bar(); // <--- line
}
我知道调用所有语句的,
运算符,但不确定或(相当于|
)运算符。
在g++中测试时,它给出。如果第一个条件为真
,则另一个条件不再被计算(在|
的情况下),因此正如您所说的:
if(foo() == false)
bar();
同样的情况也适用于&
,如果第一个条件为false,则第二个条件将不再计算。是的,或
运算符是|
的文本等价物
所以你说的是。在这首诗中加入一些三角图,这让这首诗非常痛苦,顺便说一下=p。不管怎样,你的问题是关于多部分布尔短路评估,是的,exp1 | | exp2
几乎是一样的。唯一缺少的是未使用的exp2
结果,在这两种情况下,结果都会被抛出(如果首先达到,则仅在exp1中发生,这是零等效)。很抱歉@iammilind,但这是一个重复。下次请确保您在谷歌上搜索“C++操作符”或类似内容。可能重复@H2CO3,我知道短路评估。但我担心的是价值的接受,而这在这里并没有发生。不确定它们是否重复。如果第二个条件对于&&为false,该怎么办。在&,如果第一个条件为false,则不计算第二个条件。抱歉,这是一个输入错误。。我是说第一个是假的。正确答案
if(foo() == false)
bar();