Одно сравнение отвечает на один вопрос. А у настоящих правил обычно несколько частей — младше 12 или 65 и старше, от 10 до 20, не выходной — и булева логика позволяет соединить эти части в одно условие.
И, или, не
| Условие | Можно написать и так | Истинно, когда |
|---|---|---|
a && b | a and b | оба, a и b, истинны |
a || b | a or b | хотя бы одно из них истинно |
!a | not a | a ложно |
Слова тоже часть C++: age < 12 or age >= 65 компилируется и означает ровно то
же, что age < 12 || age >= 65. Пишите как удобнее — но в чужих решениях почти
всегда будут символы, так что знать нужно оба способа.
C++ читает && и || слева направо и останавливается, как только ответ ясен:
если левая часть && ложна, её уже ничто не спасёт, поэтому на правую часть даже
не смотрят.
Проще всего не ошибиться — произнести правило вслух и прислушаться к союзу.
Бесплатный вход для посетителей младше 12 или 65 и старше — это
age < 12 || age >= 65. Поставьте там && — и бесплатно не пройдёт никто: никому
не бывает одновременно меньше 12 и больше 65.
Теперь соберите это в схему. Каждый переключатель ниже — это bool, и по каждому
проводу идёт true или false: светящийся провод — это . Щёлкайте
переключателями, зажгите лампу и найдите часть, на которую C++ даже не смотрит.
