这真的只是一个一般性问题。
这是我写的
do
{
scanf("%i", &Carselect);
if (Carselect == 1)
{
mass = 1100;
velomax = 200;
}
else if (Carselect == 2)
{
mass = 1888;
velomax = 415
}
else if (Carselect == 3)
{
mass = 18000;
velomax = 129;
}
else
{
printf("Error in input. Please enter 1, 2 or 3.\n");
}
}
while (Carselect != 1 || Carselect != 2 || Carselect != 3);
然后我陷入了循环。我在有效条件的语句中打断,这样我就可以出去了,就像这样
do
{
scanf("%i", &Carselect);
if (Carselect == 1)
{
mass = 1100;
velomax = 200;
break;
}
else if (Carselect == 2)
{
mass = 1888;
velomax = 415;
break;
}
else if (Carselect == 3)
{
mass = 18000;
velomax = 129;
break;
}
else
{
printf("Error in input. Please enter 1, 2 or 3.\n");
}
}
while (Carselect != 1 || Carselect != 2 || Carselect != 3);
但我认为 while 的条件是重复条件,所以只要 Carselect 等于 1、2 或 3,它就会退出循环。如果您必须在 if 语句中放置 break,为什么我们需要为 while 操作中的条件烦恼?
在机器级别或其他方面,有什么需要这种看似微不足道的逻辑?
最佳答案
编辑(因为问题的标题已更改):
while/do-while 循环中的检查条件是主要检查以确定程序是留在还是退出 while/do-while 循环的条件 - 而不是 break 语句。
break 语句通常在以下情况下使用:
- 您想在 执行 block 中的每个语句或 之前退出 while/do-while block
- 当在您遍历整个循环迭代之前达到某些异常终止条件时或
- 您创建了一个无限循环并捕获了一个错误,这使您无法继续循环或
- 其他一些我可能不知道的情况......
本质上,break 语句不通常用于终止 while/do-while block ,只要程序遵循(因为缺少更好的术语)“标准/主要”路径 在循环 block 中。
相比之下,while/do-while 循环中的条件用于当程序遵循“standard/main”时终止循环"循环 block 中的路径。
原文:
您应该将不等式检查 (!=
) 更改为 NOT
等式检查 (==
)。
while (!(Carselect == 1 || Carselect == 2 || Carselect == 3));
这是因为你真正想要的是循环持续到
the Carselect is not (1 or 2 or 3)
或者,您可以将 or 运算符 (||
) 更改为 and 运算符 (&&
),这会产生相同的逻辑:
while (Carselect != 1 && Carselect != 2 && Carselect != 3);
the Carselect is not 1 and not 2 and not 3
关于c - 如果你必须在 if 语句中放置 break,为什么我们需要在 while 操作中为条件操心?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36231337/