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