Бесконечные циклы - вершина или нижняя часть? [закрытый]

Нечто подобное должно работать. Вы использовали блок With для кода, но фактически не использовали его. Вам не нужны дополнительные ссылки на тот же объект. В этом я проверил, пуста ли ячейка, если не использовать

10
задан 2 revs 23 May 2017 в 12:32
поделиться

18 ответов

Я теперь предпочитаю"for (;;)"идиома, потому что это, кажется, 'терпит' больше. Я раньше использовал"while (true)"идиома, потому что я думал, что она выразила намерение лучше, но я переключился, потому что я думаю"for (;;)"идиома достаточно известна соответственно выразить намерение, а также я полагаю, что это лучше, будучи более видимым.

Отчасти как то, как Stroustrup сделал новые броски в C++ целеустремленно ужасными - таким образом, они терпят.

0
ответ дан 3 December 2019 в 13:09
поделиться
while(true) {}

Это, кажется, передает значение цикла наиболее эффективно.

36
ответ дан 3 December 2019 в 13:09
поделиться

Я обычно использую while() {}, но после изучения этого for(;;) {} не своего рода сумасшедший недопустимый синтаксис, я, несомненно, буду использовать более уникальную опцию.

Дифференцирует бесконечные циклы от фактических условных выражений, Вы видите.

0
ответ дан 3 December 2019 в 13:09
поделиться

Бесконечные циклы являются плохой идеей, но на практике который не всегда держит.

Я предпочитаю, в то время как (1) {}, но удостоверяются, что что-то в цикле может заставить это вспыхивать.

0
ответ дан 3 December 2019 в 13:09
поделиться

Когда написание кода для меня я использую для (; ;). Другие люди склонны быть смущенными его синтаксисом и так для кода, который должны видеть/использовать другие люди, я использую, в то время как (верный).

1
ответ дан 3 December 2019 в 13:09
поделиться
for(;;);

Текст заполнителя.

1
ответ дан 3 December 2019 в 13:09
поделиться

Я обычно использую for(;;) { } о котором я всегда думаю как "навсегда".

Некоторые языки предлагают a repeat { } создайте, который исходно циклично выполнится навсегда. Я нахожу for(;;) { } создайте визуально самое подобное этому, потому что это так отличается от нормального for() создать. Это - важный атрибут для бесконечного цикла это while(1) { } действительно не имеет.

3
ответ дан 3 December 2019 в 13:09
поделиться

Я использую for (;;) на языках C-стиля и while true на языках, которые не поддерживают ту конструкцию.

Я учился for (;;) метод в K&R и было всегда похоже на идиоматический C мне.

3
ответ дан 3 December 2019 в 13:09
поделиться

offtopic: если Вы будете думать о том, что Вы пытаетесь выразить, то Вам обычно не будет нужен бесконечный цикл.

1
ответ дан 3 December 2019 в 13:09
поделиться

для (; ;) то, что я обычно вижу.

1
ответ дан 3 December 2019 в 13:09
поделиться
10 some l33t code
20 goto 10
3
ответ дан 3 December 2019 в 13:09
поделиться

Я предпочитаю while(1) или while(true) - это является самым ясным. do { } while(true) походит на бесполезную путаницу. Аналогично, for(;;) может сбивать с толку людей, которые никогда не видели его прежде, тогда как while(true) очень интуитивно. И нет абсолютно никакой причины сделать label: ... goto label;, это просто более сбивает с толку.

5
ответ дан 3 December 2019 в 13:09
поделиться

Мне нравится использовать для (; ;) подход, потому что MSVC ++ компилятор жалуется на подход цикла с условием продолжения:

void main()
{
  while(1) // test.cpp(5) : warning C4127: conditional expression is constant
  {
  }

  for(;;)
  {
  }
}
6
ответ дан 3 December 2019 в 13:09
поделиться
while(1)
{
//do it 
}

Это - то, как я прокручиваюсь.

7
ответ дан 3 December 2019 в 13:09
поделиться
#define forever for(;;)

forever {
    /*stuff*/
}
12
ответ дан 3 December 2019 в 13:09
поделиться
for (;;)
{
    /* No warnings are generated about constant value in the loop conditional
       plus it is easy to change when you realize you do need limits */ 
}
22
ответ дан 3 December 2019 в 13:09
поделиться

Хвостовая рекурсия Бога ;)

Это - несколько иждивенец компилятора...

3
ответ дан 3 December 2019 в 13:09
поделиться

Пусть начинается пламя ...

Если цикл является истинным бесконечным циклом (т.е. нет условия прерывания - только внешнее событие может завершить выполнение потока / процесса), то я предпочитаю метку и goto . Вот почему:

Во-первых, использование while , для и do ... while означает, что цикл может завершиться. Даже если условие завершения никогда не достижимо, синтаксическое значение этих конструкций состоит в том, что является некоторым условием завершения.

Во-вторых, использование конструкции цикла вводит дополнительный уровень отступа. . Я ненавижу отступы, в которых нет необходимости. Он тратит впустую ценную столбчатую недвижимость.

В-третьих, единственный истинный бесконечный цикл - это тот, который безусловно переходит обратно в начало цикла. Только goto точно подходит для этой цели.

По правде говоря, меня это особо не волнует. Все они выполняют свою работу, и большинство из них в любом случае приведет к одним и тем же инструкциям по сборке. Однако , сгенерированная сборка, по всей вероятности, будет безусловным переходом (если вы оптимизатор, черт возьми), который напрямую отображается на какую конструкцию C, дети? Правильно ... ваш старый друг goto .

Все они выполняют свою работу, и большинство из них в любом случае приведут к одним и тем же инструкциям по сборке. Однако , сгенерированная сборка, по всей вероятности, будет безусловным переходом (если вы оптимизатор, черт возьми), который напрямую отображается на какую конструкцию C, дети? Правильно ... ваш старый друг goto .

Все они выполняют свою работу, и большинство из них в любом случае приведет к одним и тем же инструкциям по сборке. Однако , сгенерированная сборка, по всей вероятности, будет безусловным переходом (если вы оптимизатор, черт возьми), который напрямую отображается на какую конструкцию C, дети? Правильно ... ваш старый друг goto .

2
ответ дан 3 December 2019 в 13:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: