在 C 中使用多个关系运算符的问题

Issue with using multiple relational operators in C

我是编程新手,但是我在提问之前搜索了这个主题,但仍然无法弄清楚我的程序做错了什么。

我有这个:

int i;
do
{
    i = get_int("Enter positive integer between 1-10: \n");
}
while(1>i && i<10)

我想问用户一个1到10之间的正整数。它不接受小于 1 的值,这很好,但它会接受任何正值。我明白我不能做 1>i<10 因为它是从左到右读取的,但我无法让它认识到它必须遵循两个运算符。我的问题是什么?

只要用户输入 1 到 10 之间的数字,您可能希望循环到 运行 循环。您在 while 循环中的条件不正确。应该是这样的-

while(i>1 && i<10); # runs as long as i is in range 1 to 10

但是,如果您想在用户输入 1 to 10 范围内的任何数字后立即中断循环,那么您应该使用以下 -

while(!(i>1 && i<10)); # runs as long as i is outside the range 1 to 10

你的循环条件不正确。您应该使用 逻辑 OR 而不是 逻辑 AND.

这对我有用。

  do
  {
    i= get_int ("Enter positive integer between 1-10: \n");

  } while (i<1 || i>10);

i can't get it to recognize it has to follow both operators.
Why would it be more applicable when the integer has to meet both criteria?

do {
  ....
} while(test);

当测试 returns true 时,随着循环再次迭代,将重新尝试输入。 重试的标准是什么,不是通过的标准是什么

输入只需要通过两个测试之一即可重试:太低太高。因此需要“或”(||).

} while(i < 1 || i > 10);

你在 while expression 中弄错了 (syntax mistake)(他们的 2 个错误,逻辑不正确,1<i 出现语法错误)- 参见内联修复:

int i = 0;  /*its better if you initialize the i here*/
do
{
    i= get_int ("Enter positive integer between 1-10: \n");
}
while((i > 1) && (i < 10));

I want to ask the user for a positive integer between one and ten.

我想你想要一个介于 1 和 10 之间的整数。

这样的条件什么时候会出现一个有效的正整数?

它将看起来像下面这样

1 <= i && i <= 10

所以当这个条件不成立时,do while 循环必须继续它的迭代。所以在循环的条件中你应该写一个上面条件的否定

int i;

do
{
    i= get_int ("Enter positive integer between 1-10: \n");
} while ( !( 1 <= i && i <= 10 ) );

如果删除括号,则条件将如下所示

int i;

do
{
    i= get_int ("Enter positive integer between 1-10: \n");
} while ( 1 > i || i > 10 ) );