2013-11-03 5 views
-1

В чем разница между этими двумя циклами? Я не понимаю, что они делают.В чем разница между этими двумя циклами?

Первое:

while(condition) ; 

Второе:

while(condition){ }; 
+0

У одного есть дополнительное заявление. – chris

+0

Вы поместили каждый в 'main()', компилируете и запускаете, чтобы * видеть, что происходит, прежде чем спрашивать здесь * ?? – WhozCraig

ответ

1

Там нет никакой разницы, обе while петли приложить пустое заявление.

Практический результат - бесконечный цикл, который никогда не будет заканчиваться, если нет другого потока или какого-либо побочного эффекта, который меняет condition.

0

первый код опциональной короткая форма для второго кода, который подходит, когда вам нужно сделать только 1 операцию в цикле, как:

while (condition is true) 
    condition=dosomething(); 

вы можете спокойно переписать это так:

while (condition is true) 
{ 
    condition=dosomething(); 
} 

это будет абсолютно то же

, но если вам нужно несколько операторов в цикле, вы должны «группа» им некоторые как, поэтому компилятор будет знать, какие части кода должны быть «петельные», это делается с помощью { и }

так, несколько заявлений вы не можете использовать короткую форму, вы можете только сделать:

while (condition is true) 
{ 
    condition=dosomething(); 
    dosomething2(); 
    dosomething3(); 
} 

для многопоточного программирования мы можем иметь следующую ситуацию:

  1. Резьба1: установить условие истинного
  2. thread1: создать новый thread2 и запустить его
  3. Резьба1: теперь нужно ждать, пока thread2 не будет закончен, thread2 установит условие ложно, когда это было сделано, чтобы уведомить первой один

так, для таких ситуаций, иногда вы можете использовать бесконечный цикл, как

while (condition) ; или while (condition) { }; - которые являются такими же, как мы видим выше

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

ПРИМЕЧАНИЕ: такие бесконечные петли обычно представляют собой плохую практику, и их лучше избегать и использовать только тогда, когда вы уверены, что это имеет смысл.

0

Петли сами по себе, но за вторым следует нулевой оператор, поэтому, если этот код был взят из более крупной структуры управления, они могли бы анализировать по-разному: например, если они были частью вложенного оператора «if», за первым может следовать «else», но второй не мог.

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