|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
11.07.2011, 21:16 | #1 |
Пользователь
Регистрация: 22.05.2011
Сообщений: 26
|
$x = 0; while ($x++ < 10) echo $x."<br>" - почему выводит 10?
Код:
|
11.07.2011, 21:22 | #2 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Десять? Странно, что не одиннадцать, ведь инкремент постфиксный.
Но в любом случае, $x становится равным десяти, условие в while проверяется, получаем ЛОЖЬ и только тогда цикл прерывается. Пока $x строго меньше 10, он будет увеличиваться. |
11.07.2011, 21:48 | #3 |
Форумчанин
Регистрация: 03.05.2011
Сообщений: 158
|
Как раз и должно быть десять, потому что инкремент постфиксный.
Опустим циклы до тех пор, пока $x не будет равным 9-ти, тогда: $x=9; проверяется условие $x<10 получаем труъ. Выполняем постфиксный инкремент $x++ и получаем $x=10 выводим $x, т.е. 10-ку. снова проверяем условие $x<10, получаем не труъ, потому что 10 никак не меньше 10, после чего прекращаем циклические упражнения. (Соответственно, ничего уже никуда не выводим). |
11.07.2011, 21:57 | #4 |
Форумчанин
Регистрация: 08.01.2011
Сообщений: 226
|
Подводя итоги вышесказанному, нужно написать:
while (++$x < 10) и будет тебе счастье |
11.07.2011, 22:03 | #5 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Отнюдь, ведь постфиксный инкремент возвращает текущее значение переменной, а затем увеличивает её.
То есть, когда $x равен 9, то $x++ вернёт 9, а сам икс на той же итерации цикла станет 10, после, на следующей итерации, $x++ вернёт текущее значение икс (10) и увеличит икс на один (станет 11). И тогда уже цикл прервётся, так как 10 не меньше 10. Чтобы икс был равным 9, нужно Код:
|
11.07.2011, 22:11 | #6 |
Форумчанин
Регистрация: 03.05.2011
Сообщений: 158
|
Хм. А я что написал ?
должно быть десять - это я имел в виду, что как раз по логике системы последнее выведенное число и должно быть 10. Я написал ответ на недоумённый вопрос "Почему последнее выводимое число - 10?" ТС-а и сомнение "Десять? Странно, что не одиннадцать, ведь инкремент постфиксный. " Я расписал по шагам выполнение программы и действия интерпретатора, надеясь, что это будет понятным. (начиная при икс = 9, с проверки условия) Что ТСу действительно нужно - не известно, на самом деле, он просто недоумевал по поводу вывода в последней строке 10-ти, косвенно судя по остальному сообщению, можно предположить, что он ожидал получить последней строкой 9-ку. ТС: А вообще, что бы жилось проще - для пересчёта "for" придумали, его реально проще применять в таких случаях, чем "while" while (++$x < 9); - не пугайте так начинающих. Это вообще мои самые любимые ошибки, долго меня мучали, то и дело возвращаясь, пока форматтинг не начал делать на всё подряд Уберите в конце точку с запятой... В таком случае, кстати, (если убрать всё же точку с запятой) будет досчитано только до 8-ми, но после выполнения икс будет равен 9-ти. Нужно нибо заменить инкремент на постфиксный, либо 9-ку на 10 что бы "досчитать" до 9-ти. Причём в случае постфиксного инкремента и 9-ки, икс после цикла будет равен 9-ти, а в случае 10-ки и префиксного - соответственно, 10-ти. Последний раз редактировалось graymaster; 11.07.2011 в 22:29. |
11.07.2011, 22:32 | #7 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Ах да, всё верно. Мне почему-то показалось, что у ТС тоже после while точка с запятой стоит. Ну тогда да, последняя выведенная цифра будет 10
|
12.07.2011, 19:17 | #8 | |
Пользователь
Регистрация: 22.05.2011
Сообщений: 26
|
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" | aleksei78 | Microsoft Office Excel | 13 | 25.08.2009 12:04 |
Почему не работает Case txt Like "текст1", "текст2" | Oooleg | Microsoft Office Excel | 2 | 15.07.2009 10:08 |
Выводит ошибку "Unclarified identifier", хотя недавно запускалась в другой программе | Alex Cones | Общие вопросы Delphi | 2 | 20.04.2009 21:31 |
запрашивает ввод времени суток и в зависимости от этого выводит на экран "Доброе утро", "Добрый день". | Maria, Russia | Помощь студентам | 5 | 17.02.2009 21:44 |