Вопрос

Что я здесь делаю не так?

Я хочу отображать целые числа от 1 до 100, которые делятся на 6 или 7. Готово, работает.Следующий шаг - не отображать те, которые делятся на оба ... которые не работают в моем цикле (эти целые числа все еще отображаются)

родовое слово

Спасибо! Джоэл

Это было полезно?

Решение

попробуйте сделать ваше условие более явным, добавив (...), например:

родовое слово

по умолчанию && имеет приоритет над ||

Другие советы

Отсутствующие круглые скобки:

родовое слово

Вы также можете использовать исключительное или

родовое слово

или просто неодинаковый кодовый код
Поскольку эксклюзивный или используется не так часто, я сомневаюсь, что это повысит читаемость кода ...

Я бы просто перестал беспокоиться о том, как оценивать приоритет, и использовал бы что-то вроде:

родовое слово

Здесь я предполагаю, что 1–100 был включающим диапазоном, и в этом случае следует использовать <=, а не <. Это не имеет значения для вашего конкретного случая, поскольку 100 не делится ни на 6, ни на 7.

Знаете что? Любой достойный оптимизирующий компилятор (включая JIT), вероятно, в конечном итоге сгенерирует тот же код, что и для всех других возможностей. И даже если бы это было не так, это не имело бы значения, если бы вы не вызывали эту функцию очень много раз.

Я думаю, что это немного удобнее, чем:

родовое слово

или, что еще хуже, нечто вроде Lisp, в которое вам придется превратить его, чтобы он работал правильно :-)


Имейте в виду одну возможность - вы можете изменить свой цикл, чтобы сделать его более эффективным (семикратным), для конкретного случая с 6 и 7, таким образом:

родовое слово

При этом используется сам цикл for, чтобы проверять только числа, кратные 7, и печатать их, если они не , а также кратные 6.

родовое слово
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top