问题在于,即使输入1到8之间的数字,程序仍会继续询问高度。我也很难理解为什么我需要在while循环后重新声明“ int height”,但这是一个附带问题。
{
do
{
int height = get_int("Height: \n");
}
while ('h'>8 || 'h'<1);
int height;
printf ("Stored: %d\n", height);
}
我希望它可以将输入的数字呈现给用户,但是尽管while函数中有条件,但它不会超出请求输入的范围。
最佳答案
在您的情况下:
while ('h'>8 || 'h'<1)
'h'
是字符常量。它与变量height
无关。您正在将该常数与8和1进行比较。在ASCII中,'h'
的代码大于8,因此条件始终为true。也:
int height = get_int("Height: \n");
在循环内部声明
height
意味着它不再存在于循环外部,包括循环条件。您稍后定义的height
是与此变量不同的变量。将
height
的定义移出循环,并在比较中使用height
:int height;
do
{
height = get_int("Height: \n");
} while (height>8 || height<1);
printf ("Stored: %d\n", height);
关于c - 如何修复一会儿条件以使其不执行使零件不间断,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54154113/