我在C ++中使用逻辑OR运算符时遇到问题。问题来了,如果左侧为true,则不对右侧表达式求值。我有两个双端队列,并且需要一段时间从它们中弹出popLeft,但是如果我可以从第一个双端队列中弹出,则不会从第二个双端队列中弹出,因为没有被OR运算符评估。我该如何克服这个问题。这是一段代码:
while( D.popLeft( k ) || E.popLeft( m ) )
{
if( k < m )
{
C.pushRight( k );
E.pushLeft( m );
}
else
{
C.pushRight( m );
D.pushLeft( k );
}
}
最佳答案
我想您只希望在可以同时填充m和k时运行循环的内容,对吗?然后只需将您的OR替换为AND:
while( D.popLeft( k ) && E.popLeft( m ) )
{
if( k < m )
{
C.pushRight( k );
E.pushLeft( m );
}
else
{
C.pushRight( m );
D.pushLeft( k );
}
}
然后将执行两个弹出窗口。
关于c++ - 逻辑或表达式c++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13668643/