3 / 3 / 6
Регистрация: 30.10.2016
Сообщений: 35
|
||||||
1 | ||||||
Не пойму странную логику работы switch в цикле24.02.2017, 13:31. Показов 1292. Ответов 7
Метки нет (Все метки)
Приветствую друзья!
Смотрите, есть такой код:
0
|
24.02.2017, 13:31 | |
Ответы с готовыми решениями:
7
Не пойму логику нахождения минимального числа Ошибка в цикле, не пойму где Switch в цикле for Работа с оператором switch в цикле |
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
|
|
24.02.2017, 14:19 | 2 |
Сообщение было отмечено Siarera как решение
Решение
Потому что case это не if. Здесь нужны конкретные значения, а не условия.
Сейчас это работает так: Для $i = 0, записи case ($i < 10) и case ($i < 20) аналогичны записи case true. Но $i = 0 = false. Поэтому ни один case не выполняется и 0 не попадает в массив. Для $i = 1, записи case ($i < 10) и case ($i < 20) аналогичны записи case true. $i = 1 = true. Выполняется первый подходящий case ($i < 10) и 1 попадает в массив. ... Для $i = 20, записи case ($i < 10) и case ($i < 20) аналогичны записи case false. $i = 20 = true. Таких case нету, поэтому 20 не попадает в массив.
1
|
3 / 3 / 6
Регистрация: 30.10.2016
Сообщений: 35
|
||||||
24.02.2017, 15:13 [ТС] | 3 | |||||
tarasalk, благодарю!
Не учел, что switch использует неточное сравнение и потому расценивает ноль как false. Тогда исправить эту погрешность можно, вставив case 0 перед первым условием:
0
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
||||||
24.02.2017, 15:28 | 4 | |||||
И получилась полная ерунда. Как было сказано выше тут надо использовать оператор if
0
|
3 / 3 / 6
Регистрация: 30.10.2016
Сообщений: 35
|
|
24.02.2017, 15:39 [ТС] | 5 |
Jewbacabra, проверьте мой пример, он рабочий.
0
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
24.02.2017, 16:01 | 6 |
Он случайно рабочий. Никакой логики в нем нет, этот код показывает полное непонимание программистом того что он делает. Из любой компании после такого последовало бы увольнение за неполное служебное соответствие.
0
|
3 / 3 / 6
Регистрация: 30.10.2016
Сообщений: 35
|
|
24.02.2017, 16:16 [ТС] | 7 |
Конечно в этом коде логики нет, он сделан только для демонстрации вопроса. Или вы думали, что я вытащил его прямо из своего проекта? Наивно.
0
|
10 / 10 / 7
Регистрация: 18.10.2015
Сообщений: 160
|
|
25.02.2017, 18:40 | 8 |
0
|
25.02.2017, 18:40 | |
25.02.2017, 18:40 | |
Помогаю со студенческими работами здесь
8
Switch в цикле не выводит информацию Накапливается ошибка в цикле программы на Fortran. Не пойму почему Наладить логику работы программы Изменить логику работы ссылки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |