我在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/

10-10 16:16