C编程,而条件被忽略

时间:2014-10-20 13:43:21

标签: c while-loop

我的第二个条件被忽略,不知道如何解决它。

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);
}

2 个答案:

答案 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);
}

在这里解释很多都没用,除非你完全解释你的需要。