Условия в do-while с ||против && - PullRequest
0 голосов
/ 20 октября 2018
main()
{
    int x, y, userInput;
    do {
        {   printf("Input a number: \n");
        scanf("%i", &userInput);
        }
    } while (userInput < 1 || userInput > 50);

Хотя конечное условие работает с ||, я хочу понять, почему оно не работает с &&.|| позволяет мне установить диапазон от 0 до 50. Если я использую &&, это позволяет всем входам без ограничений.Это очень легко для большинства, но я новичок и пытаюсь изучить самые основы.Цени любую помощь!

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

Ответы [ 2 ]

0 голосов
/ 20 октября 2018

Поскольку || и && не означают одно и то же.

|| является логическим оператором ИЛИ, поэтому в этом есть смысл, потому что вы запускаете цикл снова, только если ввод не согласно вашей спецификации.Неправильный ввод - это где userInput <1 или userInput> 50.Это неправильно в обоих случаях, но достаточно одного случая, чтобы сделать это неправильно, поэтому вы используете ИЛИ.Не может быть так, чтобы vaue было одновременно <1 и> 50, поэтому оператор AND (&&) всегда будет возвращать false.

Если вы хотите использовать && дляскажем «запустите цикл снова, только если число , а не между 1 и 50», вы должны изменить сравнение на:

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

Обратите внимание, что ! является оператором НЕ.

0 голосов
/ 20 октября 2018

Вы хотите выполнить петлю, когда вход ниже единицы или вход больше 50.

Если вы используете и, условие никогда не будет истинным, так как вход не может быть меньше 1 и больше чем50.

...