|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.03.2019, 17:49 | #1 |
Новичок
Джуниор
Регистрация: 23.03.2019
Сообщений: 1
|
Не пойму почему
Случайно обнаружил и не могу понять почему так происходит, объясните
Код:
Но при этом: Код:
Почему так? |
23.03.2019, 18:19 | #2 |
Старожил
Регистрация: 12.11.2010
Сообщений: 8,568
|
У вас стоит постинкремент. Он действительно пересчитывает значение своего операнда. При этом, сначала идёт сравнение, а потом уже увеличение (это ПОСТинкремент). Также следует учитывать, что оператор "ЛОГИЧЕСКОЕ ИЛИ" работает так: он последовательно проверяет свои операнды на истинность. Если очередной операнд оказывается истинным, то он прекращает его выполнение и возвращает истину. Если ложь, то идёт дальше. Если он так и не нашёл истину, то он возвращает ложь. Давайте с учётом этого посмотрим, как работает ваш код. Вы задали для переменной x значение 5. На самом деле, переменная x имеет строковый тип, но у вас используется сравнение с преобразованием типов (==), поэтому это неважно. Просто имейте в виду, что promt, если его что-то ввели, возвращает строку, а не число.
Допустим, ввели 4. Заходим, в условие, первых операнд: 4 == 5 — это верно? Нет, мы уменьшаем значение i с 5 до 4 и смотрим дальше. 4 равно 4? Да, но мы потом выполним инкремент, оть он нам больше не нужен. Попробуйте порассуждать аналогичным образом для 6. _____________________ Последний пример работает из-за того, что для 4 у вас истинен второй операнд, а для 6 — первый. Последний раз редактировалось Вадим Мошев; 23.03.2019 в 18:28. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не пойму почему | Borkot | Общие вопросы C/C++ | 3 | 09.06.2013 22:33 |
Не пойму почему не работало ((( | firephenix | Помощь студентам | 2 | 16.10.2012 20:25 |
with ... do - не пойму почему ошибка | MyLastHit | Общие вопросы Delphi | 2 | 23.12.2010 15:26 |
не пойму почему так (comm32) | yuta_86 | Общие вопросы Delphi | 11 | 15.12.2010 16:07 |
не пойму почему. | spaun88 | Общие вопросы Delphi | 8 | 09.06.2010 17:26 |