我的第二个条件被忽略,不知道如何解决它。
int while_counter = 0;
int finish_flag = 0;
while(while_counter < 100 || finish_flag != 1)
{
while_counter++;
finish_flag = 1;
printf(" finish_flag is %d \n", finish_flag);
}
我猜它把它解释为。对?我该如何解决这个问题?我仍然希望我的第一个条件得到尊重。
while(1)
{
while_counter++;
finish_flag = 1;
printf(" finish_flag is %d \n", finish_flag);
}
答案 0 :(得分:1)
您需要逻辑AND运算符而不是逻辑OR运算符。
在英语中,请将while
中的条件读作:
“ while_counter
&lt; 100或finish_flag
不是1,在我的身体做任何事情”。
想一下。您将意识到您需要在上面的英文版本中将“或”替换为“和”,这就是您需要&&
而不是||
的原因。
在您当前的版本中,while
中的两个条件都必须为false才能结束。您修改finish_flag
,使第二个条件为false,但每次迭代都会增加while_condition
由于||
表示“或”只有一个参数需要为真,才能执行正文。因此,while_condition
需要增加100次,第一个条件为false
,这就是循环执行100次的原因。
答案 1 :(得分:0)
您的解释(而(1))是不对的。 您的代码将打印“finish_flag为1”100次。如果是while(1),则会永久打印“finish_flag为1”。
无法弄清楚你到底想要做什么。
while(while_counter < 100 || finish_flag != 1)
{
while_counter++;
finish_flag = 1;
printf(" finish_flag is %d \n", finish_flag);
}
在这里解释很多都没用,除非你完全解释你的需要。