Sha*_*022 1 c++ loops linked-list while-loop
我有这个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;
}
}
Run Code Online (Sandbox Code Playgroud)
输出如下,请记住,在这个特定的例子中,循环底部应该还有一个FREE输出,因为我的f链表有3个节点,而我的链表有2个
Memory Block Job
0 - 99 FREE
100 - 129 3
IM IN THE BOTH
130 - 149 FREE
150 - 179 2
IM IN THE BOTH
Run Code Online (Sandbox Code Playgroud)
while (f != NULL && t!= NULL)
Run Code Online (Sandbox Code Playgroud)
将评估真正的只有两个f和t都是非NULL.
从循环内部的代码判断,您希望它在任何一个变量为非NULL时运行.您需要使用逻辑OR ||:
while (f != NULL || t!= NULL)
Run Code Online (Sandbox Code Playgroud)