我有一个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)
仅当
f
和t
均为非NULL时,才会评估为true。从循环内的代码来看,您希望它在两个变量均为非NULL时运行。您需要改用逻辑OR
||
:while (f != NULL || t!= NULL)
关于c++ - 使用&&的while循环如果两个为真则结束,而不是两个都为真,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21722273/