Логические операции в С++

Логические операции в С++
4.5 (90%) 2 votes




логические операции в с++, с++ для начинающихПродолжаем изучать основы программирования. Мы с вами уже познакомились с арифметическими операциями (в том числе комбинированными арифметическими операциями — с одновременным присваиванием значения переменной). Рассмотрели так же унарные операторы инкремент и декремент. Но в программировании нам придется не только заниматься вычислением, а так же сравнивать значения переменных друг с другом. В этом уроке будем разбираться с логическими операциями языка С++. При сравнении между собой каких-либо переменных (значений), мы получаем результат — ложь (false) или истина (true). Например, мы сравниваем два значения: 3 < 8 — это истина, так как 3 действительно меньше 8. А вот 10 > 50 — это ложь.

Рассмотрим операторы, которые применяются для логических операций:

логические операции в с
Логические операции — таб. 1

Все операторы из таблицы 1 — и операторы сравнения и операторы равенства являются бинарными. В программировании работа с ними сводится к тому, что мы сравниваем два операнда (два значения) между собой и видим их отношение друг к другу: один больше, а второй меньше, или наоборот, или один абсолютно равен второму, или не равен… В результате этой проверки, как говорилось выше, в программу возвращается одно из двух возможных значений — false (0) или true (1). Кстати, к истине в С++ относится любое значение, как положительное так и отрицательное, кроме 0. Важно — не путайте операторы = (присваивание значения переменной) и == (логический оператор равенства). Это два абсолютно разных оператора.

логические операции в с
Логические операции -таб. 2

Логические операции объединения && и || также имеют бинарную форму. Они используются в программировании для того, чтобы можно было не только сравнивать два значения, а и создавать некие условия или объединять несколько условий сравнения или равенства в одно. Например у нас есть переменная variable значение которой вводит пользователь. А мы хотим узнать — находится ли оно в диапазоне от 10-ти до 20-ти? Это так (true) или не так (false)? Проверим, используя логическое И (&&): cout << ((variable > 10) && (variable < 20)); То есть, на экран покажется 1(true), только в том случае, если значение будет одновременно больше 10 И(&&) меньше 20. Если пользователь введет 15 — увидим на экране 1. Если введет 21 — на экране 0, так как 21 уже вне диапазона.

Результаты, которые возвращает комбинированное условие с логическим И (&&), можно представить в таблице:

логические операции в с
Логические операции — таб. 3

Применительно к примеру рассмотренному выше: 15 одновременно и >10 и <20. Значит выполняются и Условие 1 и Условие 2. Итог — true. Если бы пользователь ввел значение 50, то выполняется и дает true только Условие 1 (>10), а Условие 2 (<20) — это уже false, так как оно не выполняется. Итог комбинированного условия — false.

А что если нам необходимо наоборот подтвердить, что введенное число не принадлежит заданному диапазону, а находится в диапазонах либо <10, либо >20? Тогда нам придется составить комбинированное условие, используя логический оператор ИЛИ ( || ): cout << ((variable < 10) || (variable > 20)); Тогда если пользователь ведет 15 — увидим на экране 0, так как 15 не входит ни в диапазон от 9 до -∞, ни в диапазон от 21 до +∞. А если введет 22 — на экране увидим 1, так как 22 попадает под второе условие и входит в диапазон от 21 до +∞.

Результаты, которые возвращает комбинированное условие с логическим ИЛИ ( || ), можно так же представить в таблице:

логические операции в с
Логические операции — таб. 4

Что касается отрицательной инверсии — логическое НЕ ( ! ) — этот оператор является унарным. Он всегда «перекручивает» возвращаемый результат условия. Например, при выводе на экран результата сравнения cout << (3 < 8); — увидим 1, так как это истина. А используя перед условием логическое НЕ: cout << !(3 < 8); истина условия (3 < 8) преобразуется в ложь. В таблице это выглядит так:

логические операции в с
Логические операции — таб. 5

Соберем все рассмотренное в один код:

Результат:
логические операции в с

Мы рассмотрели основные логические операции в С++. Возможно пока не совсем понятно, как они применяются в программировании. Но это нормально. Всю их необходимость вы увидите, когда мы будем изучать конструкции логического выбора if и if else.

Предлагаем вам посмотреть видео, где рассмотрены логические операции и не только:

Рассылка новых уроков по программированию:

Логические операции в С++: 6 комментариев

  1. особенно важно не запутаться с действиями типа !(a < b), так как легко запутаться с результатом… было однажды такое, запутался и не понял почему 0 получился, а оказывается всё просто… и в этой статье про это говорится! спасибо автору! познавательно!

Добавить комментарий

Код размещайте в тегах: <pre class="lang:c++ decode:true ">YOUR CODE</pre>