c - 如何修复 while 条件,使其不会不间断地执行 do 部分

标签 c do-while

问题是,即使输入 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 - 如何修复 while 条件,使其不会不间断地执行 do 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54154113/

相关文章:

php - do-while 是 php 中最快的循环吗?

java - 如何以新值退出 while 循环?

c - 随机数发生器 C

c - 将void(*)()指针用于其他功能

c - 如何检查多表C程序中输入的整数?

java - 如何在Java循环中检查变量

java - 反转 while 循环形状?

c - 将文件添加到目录

c - sleep 函数是让所有线程都 sleep 还是只让调用它的线程 sleep ?

c++ - 为什么不能在 do while 循环的表达式部分声明变量?