Я понимаю, что циклы while будут работать "Пока что-то верно"
Но когда бы я использовал

while (--i)

Я понимаю, что это говорит: «Хотя я убеждаю, это правда»

Я точно знаю, что мое понимание этого утверждения неверно.

Я надеюсь, что кто-то может дать мне пример того, когда это будет использовано.

Я думаю, что это было бы как если бы утверждение, которое просто продолжает происходить, когда я уменьшается.

0
boboobobo 17 Дек 2015 в 14:54

3 ответа

Лучший ответ

В JavaScript:

var i = 4;
while (--i) // try also i--
{
  alert("we still have time " + i);
}

В некоторых языках числа больше 0 считаются истинными , когда используются как логические значения (я думаю, что в Си это будет работать). В этом случае (JavaScript, как указал myf) вы будете выполнять итерации до того момента, пока i не превысит 0. Попробуйте --i и i-- увидеть разницу в количестве итераций.

В других языках, таких как Java, C #, как указано a_horse_with_no_name, вы должны указать, что это логическая операция, например while ( --i > 0) . Что говорит компилятор C #:

Невозможно неявно преобразовать тип 'int' в 'bool'

6
Bakudan 18 Дек 2015 в 13:33

Обратный отсчет до falsy результата или более буквального:

В то время как результат --i не оценивает что-то, что оценивается как ложное (то есть 0), сделайте что-нибудь.

0
Kris 17 Дек 2015 в 12:04

Вы иногда видите

var i = 4;
while(--i) {
  // Code to repeat 4 times
}

Как более сжатый способ написания

for (var i = 0; i < 4, i += 1) {
  // Code to repeat 4 times
}

Но это также потенциально более запутанно читать (особенно если вы не знаете, что ноль - это ложь в JavaScript). Я обычно предпочитаю последнюю форму.

0
jkdev 17 Дек 2015 в 12:18