4/09/2009

Задачка на сообразительность

Сколько раз выполнится цикл?:

for(i = 0;i++;--i!=0);

3 комментария:

  1. по идее 0 раз, так как условие выполнения false, т.е. это все равно что написать for(i=0;false;--i!=0); Если не учитывать что в С++ (если это не С конечно) правила неявного int нет и компайлер бы заматерился на то что i - undefined variable

    ОтветитьУдалить
  2. Да, конечно же надо было написать int i и т.д. Но просто суть не в этом ;-)

    ОтветитьУдалить
    Ответы
    1. Суть в том, что цикл ни разу не выполнится, т.к. изначально в условии цикла i = 0, и используется постфиксный инкремент. т.е. сначала производится проверка выполнения условия во втором выражении for(;условие;), а потом инкремент. мы вываливаемся из цикла и можем распечатать i, он будет равен 1. а во тесли мы будем юзать так (префиксный инкремент):
      for(i = 0; ++i;--i!=0);
      то зависнем

      Удалить