простой логический вопрос
-
24-09-2019 - |
Вопрос
Что я здесь делаю не так?
Я хочу отображать целые числа от 1 до 100, которые делятся на 6 или 7. Готово, работает.Следующий шаг - не отображать те, которые делятся на оба ... которые не работают в моем цикле (эти целые числа все еще отображаются)
родовое словоСпасибо! Джоэл
Решение
попробуйте сделать ваше условие более явным, добавив (...), например:
родовое словопо умолчанию && имеет приоритет над ||
Другие советы
Отсутствующие круглые скобки:
родовое словоВы также можете использовать исключительное или
родовое слово или просто неодинаковый кодовый код
Поскольку эксклюзивный или используется не так часто, я сомневаюсь, что это повысит читаемость кода ...
Я бы просто перестал беспокоиться о том, как оценивать приоритет, и использовал бы что-то вроде:
родовое слово Здесь я предполагаю, что 1–100 был включающим диапазоном, и в этом случае следует использовать <=
, а не <
. Это не имеет значения для вашего конкретного случая, поскольку 100 не делится ни на 6, ни на 7.
Знаете что? Любой достойный оптимизирующий компилятор (включая JIT), вероятно, в конечном итоге сгенерирует тот же код, что и для всех других возможностей. И даже если бы это было не так, это не имело бы значения, если бы вы не вызывали эту функцию очень много раз.
Я думаю, что это немного удобнее, чем:
родовое словоили, что еще хуже, нечто вроде Lisp, в которое вам придется превратить его, чтобы он работал правильно :-)
Имейте в виду одну возможность - вы можете изменить свой цикл, чтобы сделать его более эффективным (семикратным), для конкретного случая с 6 и 7, таким образом:
родовое слово При этом используется сам цикл for
, чтобы проверять только числа, кратные 7, и печатать их, если они не , а также кратные 6.