не выходит из while

jenya7
Дата: 17.07.2014 11:11:58
while (active == false || iterations < 10)
{
     iterations++;
     Console.WriteLine(iterations);
}

логическое ИЛИ не работает - проверяет первое условие - оно false и не выходит из while.
Shocker.Pro
Дата: 17.07.2014 11:41:41
первое УСЛОВИЕ будет равно false, когда active будет равно true

не надо путать самого себя, сравнивая логическую переменную с логичекой константой, в итоге сами не понимаете, как это работает.
Напишите
while (active || iterations < 10)
или
while (!active || iterations < 10)
в зависимости от того, что нужно
jenya7
Дата: 17.07.2014 12:06:27
что то я действительно туплю, у меня так
static bool active = false;
static int iterations;

так он выходит
while (active || iterations < 10)

я так понимаю по второму условию
а так не выходит
while (!active || iterations < 10)

а почему? второе условие выполняется ведь.
Shocker.Pro
Дата: 17.07.2014 12:09:14
jenya7
а так не выходит
while (!active || iterations < 10)


а почему? второе условие выполняется ведь.
второе условие не проверяется. Для продолжения цикла достаточно выполнения первого условия.

Переведите на русский, может так понятнее?
ПОКА НЕ АКТИВНО ИЛИ ИТЕРАТОР МЕНЬШЕ 10 ВЫПОЛНЯТЬ ЦИКЛ

Достаточно того, что ПОКА НЕ АКТИВНО, итератор уже не важен
jenya7
Дата: 17.07.2014 12:13:07
Shocker.Pro
jenya7
а так не выходит
while (!active || iterations < 10)


а почему? второе условие выполняется ведь.
второе условие не проверяется. Для продолжения цикла достаточно выполнения первого условия.

Переведите на русский, может так понятнее?
ПОКА НЕ АКТИВНО ИЛИ ИТЕРАТОР МЕНЬШЕ 10 ВЫПОЛНЯТЬ ЦИКЛ

Достаточно того, что ПОКА НЕ АКТИВНО, итератор уже не важен


А как же сделать чтобы оба условия проверялись?
Shocker.Pro
Дата: 17.07.2014 12:17:04
Напишите ПО РУССКИ, чего вы хотите от цикла
skyANA
Дата: 17.07.2014 12:17:55
jenya7
Shocker.Pro
пропущено...
второе условие не проверяется. Для продолжения цикла достаточно выполнения первого условия.

Переведите на русский, может так понятнее?
ПОКА НЕ АКТИВНО ИЛИ ИТЕРАТОР МЕНЬШЕ 10 ВЫПОЛНЯТЬ ЦИКЛ

Достаточно того, что ПОКА НЕ АКТИВНО, итератор уже не важен


А как же сделать чтобы оба условия проверялись?
Если Вы хотите, чтобы цикл выполнялся пока признак активности (active) имеет значение false И выполнено меньше 10 итераций, то:
while (!active && iterations < 10)
{
     iterations++;
     Console.WriteLine(iterations);
}
jenya7
Дата: 17.07.2014 12:19:50
Shocker.Pro
Напишите ПО РУССКИ, чего вы хотите от цикла


Я опрашиваю машину по компорту. Она мне может ответить на 1-ой итерации а может и на восьмой. Ее ответ выставляет active в true.
Если она ответила на 1-ой итерации я не хочу гонять еще 9 циклов.
Это в этом цикле два условия а их может быть и пять и все надо проверить.
Shocker.Pro
Дата: 17.07.2014 12:21:48
jenya7
и все надо проверить.
ну так значит надо проверить первоеусловие И второеусловие И третьеусловие. А вы проверяете ИЛИ
jenya7
Дата: 17.07.2014 12:21:55
skyANA
jenya7
пропущено...


А как же сделать чтобы оба условия проверялись?
Если Вы хотите, чтобы цикл выполнялся пока признак активности (active) имеет значение false И выполнено меньше 10 итераций, то:
while (!active && iterations < 10)
{
     iterations++;
     Console.WriteLine(iterations);
}

в том то и дело что так цикл почему то продолжает бежать