2010-12-04 1 views
3

Можно создать дубликат:
Is “for(;;)” faster than “while (TRUE)”? If not, why do people use it?В чем разница между (;;) и while (1)?

мне было интересно, в чем разница между for(;;) и while(1), когда оба выполняют ту же функцию? Будет ли разница в скорости компиляции

+6

Как вы можете закрыть вопрос __C++ best-practice__, указывающий на ответы __C# best-practice__? Извините, но это абсурдно. Проголосовал за повторное открытие. – sbi 2010-12-04 10:53:57

+0

будет какая-то разница в скорости компиляции! Обычно говорят, что программисты используют, а не для – abhinav 2010-12-04 11:16:16

+0

@sbi: Я думаю, что путаница проистекает из ответов, фактически эквивалентных между двумя вопросами. Но я согласен, это * совершенно другой вопрос. – 2010-12-04 11:41:44

ответ

9

Разница заключается в том, что многие компиляторы будут предупреждать о while(true) («постоянное выражение используется как выражение цикла»), в то время как никто не знает о предупреждении о for(;;).

Они должны сгенерировать тот же код.

8

никаких функциональных различий вообще, только вопрос вкуса.

6
  • И будет вызывать бесконечный цикл, если break не вызывается явно.
  • Лично я предпочитаю в то время как (1), это более читаемым
+0

Определенно вопрос вкуса; Я нахожу `for (;;)` более читаемым. – meagar 2010-12-04 22:52:29

+0

+1 для (;;) {работает в java и javascript также) – bestsss 2011-01-19 19:04:24

4

Нет разницы. Я предпочитаю последнее.

0

Никакой разницы, если вы не хотите использовать какой-либо счетчик позже, как показано ниже.

for (int i =0; i < 100; i++) { 
    // some code 
} 
4

6 из одного, 110 другого.

Последний выглядит более кратким.

-1

Я старая школа, я до сих пор сделать следующее:

#define TRUE 1 
#define FALSE 0 
while (TRUE) { /*--do something, mutley--* } 
0

Оба одинаковы в C++. Однако ваш пост помечен c# и c++.

Если вы используете C#, вам необходимо использовать while (true) {...}. Лично я предпочитаю то же самое в C++: числа используются только при работе с ... ну, цифры! При работе с булевыми значениями вместо этого используются true и false.

0

Они оба определяют то же самое функциональное поведение и создают точно такой же код IL из C#.

8

С for, вы можете сделать это:

#define ever (; ;) // note the two happy faces? ;) 

for ever { ... } // endless loop 

что невозможно с while.

 Смежные вопросы

  • Нет связанных вопросов^_^