20.01.2007, 20:08
общий
это ответ
Здравствуйте, Вячеслав Шинкаренко!
Цикл в Си++ представляет собой следущее:
for (инициализация; условие; итерация)
здесь инициализация - это то, что выполняется первый раз
условие - буловское значение, пока оно равно true - цикл выполняется, поэтому цикл
while (условие)
{
}
эквивалентен
for (;условие;)
{
}
итерация - это то, что выполняется при каждом проходе цикла.
Теперь нужно отметить такой момент, что в с++ bool - это такое числовое значение, что если оно равно 0, то это false, при других значения это true
т.е.
цикл
while (true) - бесконечный
то и циклы
while (1)
while (5)
while (8)
тоже бесконечные
Еще один момент: в си оператор = возвращает результат присваивания. Т.е. (x = 5) имеет значение 5 . Поэтому можно записать так: y = (x = 5), ну или без скобок, y = x = 5
Вернемся к вашей задаче.
В первом случае в качестве условия всегда будет значение присваивания a = 5, т.е. 5,а пять в виде bool означает true, получаем всегда выполняющееся условие, т.е. бесконечный цикл
Во втором случае единственное, что делает выражение a+2, это создает некоторую ячейку в памяти со значением 2, при этом само a не изменяется и всегда остается меньше чем 5. Т.е. a < 5 выполняется всегда и цикл бесконечный.