问题在于,即使输入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/

10-14 14:28