我有一个while循环,如果其中一种情况为真,则总是结束,而不是只有两种情况都为真,才结束。有人知道为什么吗?

while (f != NULL && t!= NULL)
{
    if ( f == NULL && t!= NULL)
    {
        cout << t->start_byte << " - "<< left<< setw(20) << t-> end_byte <<  t->id << endl;
        t=t->next;
    }
    else if (t == NULL && f != NULL)
    {
        cout << f->start_byte << " - "<< left<< setw(21) << f-> end_byte << "FREE" << endl;
        f=f->next;
    }
    else
    {
        cout << f->start_byte << " - "<< left<< setw(21) << f-> end_byte << "FREE" << endl;
        cout << t->start_byte << " - "<< left<< setw(21) << t-> end_byte <<  t->id << endl;
        cout<< " IM IN THE BOTH " << endl;
        t=t->next;
        f=f->next;
    }
}

输出如下,请记住,在此特定示例中,循环在底部应再有一个FREE输出,因为我的f链表具有3个节点,而我的t链表具有2个节点
  Memory Block Job

0 - 99                   FREE
100 - 129                  3
 IM IN THE BOTH
130 - 149                  FREE
150 - 179                  2
 IM IN THE BOTH

最佳答案

while (f != NULL && t!= NULL)

仅当ft均为非NULL时,才会评估为true。

从循环内的代码来看,您希望它在两个变量均为非NULL时运行。您需要改用逻辑OR ||:
while (f != NULL || t!= NULL)

关于c++ - 使用&&的while循环如果两个为真则结束,而不是两个都为真,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21722273/

10-11 19:09