Eur*_* KN 2 c if-statement do-while
这只是一个普遍的问题.
我最初写的
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);
Run Code Online (Sandbox Code Playgroud)
我陷入了困境.我在有效条件的陈述中放了休息,这让我可以离开,就像这样
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);
Run Code Online (Sandbox Code Playgroud)
但我认为while的条件是重复条件,所以一旦Carselect等于1,2或3,它就会退出循环.如果你必须在if语句中放置中断,为什么我们需要在while操作中打扰条件?
在机器级别或其他方面,有什么需要这个看似微不足道的逻辑?
编辑(随着问题标题的更改):
while/do-while循环中的检查条件是主要检查以确定程序是否要保持或退出while/do-while循环而不是break语句的条件.
break语句通常用于:
本质上,只要程序跟随(缺少更好的术语)循环块中的"标准/主"路径,break-statement 通常不用于终止while/do-while 块.
相反,条件在while/do-while循环被用于终止循环程序时遵循在循环块"标准/主"路径.
原版的:
您应该将不等式check(!=)更改为NOT等式检查(==).
while (!(Carselect == 1 || Carselect == 2 || Carselect == 3));
Run Code Online (Sandbox Code Playgroud)
这是因为你真正想要的是循环继续只要
Carselect不是(1或2或3)
或者,您可以将or运算符(||)更改为和operator(&&),从而产生相同的逻辑:
while (Carselect != 1 && Carselect != 2 && Carselect != 3);
Run Code Online (Sandbox Code Playgroud)
Carselect不是1而不是2而不是3
| 归档时间: |
|
| 查看次数: |
47 次 |
| 最近记录: |