gpt4 book ai didi

c++ - 如果其中一个为真,则 && 循环结束,而不是如果两个都为真

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:15:34 25 4
gpt4 key购买 nike

我有一个 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 时才会计算为真。

从循环内的代码来看,您希望它在任一变量为非 NULL 时运行。您需要使用逻辑或 || 代替:

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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com