||期间的条件与&&

时间:2018-10-20 15:57:57

标签: c loops conditional-statements nested-loops do-while

main()
{
    int x, y, userInput;
    do {
        {   printf("Input a number: \n");
        scanf("%i", &userInput);
        }
    } while (userInput < 1 || userInput > 50);

虽然while结束条件适用于||,但我想了解为什么它不适用于&&||允许我在0到50之间设置范围。如果我使用&&,则允许所有输入不受限制。对于大多数人来说,这非常容易,但是我是新手,正在尝试学习基础知识。感谢任何帮助!

for (x = 1; x <= userInput; x++) {
        for (y = 1; y <= x; y++) {
            printf("*");
        }
        printf("\n");
    }
    PAUSE;
}

2 个答案:

答案 0 :(得分:2)

您要在输入小于1或输入大于50时循环播放。

如果使用and,则条件永远不会为真,因为输入不能小于1且大于50。

答案 1 :(得分:1)

因为||&&的含义不同。

||是逻辑“或”运算符,因此在这里非常有意义,因为只有在您输入的输入符合规范时,才再次运行循环。错误的输入是userInput <1或userInput> 50。在两种情况下都是错误的,但是仅一种情况就足以使它出错,因此您使用OR。值不可能同时是<1和> 50,所以那里的AND运算符(&&)总是返回false。

如果您想使用&&说“仅当数字不是在1到50之间时才再次运行循环”,必须将比较更改为:

  • while (!(userInput >= 1 && userInput <= 50));

请注意,!是NOT运算符。