учимся пользоваться логическими операторами

Логические выражения в C++ — урок 5

Всем привет! Сейчас пойдет о логических операторах в C++. Поскольку нам постоянно надо что-то сравнивать (например что больше, а что меньше), то нам надо иметь возможность реализовывать подобный функционал и в C++.

Логические переменные

Для того, чтобы мы могли хранить данные логического типа, нам надо знать о логических переменных. Мы уже встречались и ими в нашем прошлом уроке. Но давайте повторим:

  • Логические данные хранятся в переменных типа bool.
  • Хранить они могут только два значения:
    • «Верно» — это true;
    • «Лож» — это false;

Теперь давайте узнаем какие логические операторы существуют в C++.

Операторы сравнения

Язык C++ имеет 5 различных операторов сравнения в своем арсенале. Также существуют такие операторы, которые являются комбинациями других. Все они вам должны быть знакомы из курса математики, поэтому их изучение не должно вызвать у вас проблем.

Давайте разберем по порядку каждый из них:

  • A < B — сравнивает две переменные и возвращает true, если A меньше B.
  • A > B — возвращает true, если A строго больше B.
  • A == B — проверяет на равенство переменные A и B.
  • A != B — проверяет переменные A и B на неравенство.
  • A >= B — нестрогое неравенство. Возвращает true, если A больше или равно B.
  • A <= B — противно неравенству A > B.

Теперь давайте разберем пару примеров, тем самым подкрепим теорию практикой:

Из примера видно, что в качестве A и B мы можем использовать не только переменные, но и простые числа.

Мы немного поэкспериментировали с операторами сравнения, однако пока не можем сгруппировать несколько из них и следственно создать серьезное логическое выражение. Для этих целей мы и будем применять логические операторы.

Логические операторы

Для комбинации сразу нескольких логических выражений мы должны использовать один или набор логических операторов.

Давайте рассмотрим следующий список:

  • A && B — эквивалент «И». Соответственно возвращает true, если A и B являются истиной.
  • A || B — эквивалент логического «ИЛИ». Вернет true ели хотя бы одно из выражений является истинным.
  • A xor B — этот оператор можно сравнить с «ТОЛЬКО ОДИН», соответственно вернет true если A == true и B == false, или наоборот.
  • !A — данный оператор инвертирует значение A. То есть, если A == true, то он вернет false и наоборот.

Здесь самая главная «причуда» логических операторов — это их обозначения в C++. В остальном они интуитивно понятны.

Теперь давайте попробуем на примере скомбинировать несколько логических выражений и вывести их значения на экран. Заранее расскажу про следующую строку:

она отвечает за форматный вывод bool переменных (вывод слов вместо чисел). Дело в том, что по умолчанию C++ при выводе логических значений используются два значения:

  • 1 для true;
  • 0 для false;

Таким образом мы «приукрасим» вывод нашей программы и сделаем его более читабельным.

Вот наша программа:

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

Давайте посмотрим, что же выводит наша программа:

Вывод нашей программы
r = false
r = true
r = true
r = false
Process returned 0 (0x0) execution time : 0.020 s
Press any key to continue.

Из судя по выводу программы вы можете проверить сами себя, если предварительно вручную на листочке или в уме вычислите ответ.

Теперь я вам рекомендую пройти тест по пройденной теме.



Тест на тему «Логические выражения»

Пожалуйста, подождите пока страница загрузится полностью.
Если эта надпись не исчезает долгое время, попробуйте обновить страницу. Этот тест использует javascript. Пожалуйста, влкючите javascript в вашем браузере.

If loading fails, click here to try again

Если ты прочитал весь материал описанный выше, то попробуй пройти тест, который покажет твой уровень знания данного материала.
Начать


А на это я с вами прощаюсь. До скорых встреч!




Комментарии к записи “Логические выражения в C++ — урок 5”
  • Дмитрий:

    Если возникли вопросы, то задавайте их в комментариях.

    • lika:

      !((x > y <= 4) && (x = 4 || z == 7)))
      Какие числа подставить для того, что бы ответом была единица (1)?

  • Ростислав Мак:

    а где видео

  • van:

    error C2146: синтаксическая ошибка: отсутствие «;» перед идентификатором «xor»

    error C3861: xor: идентификатор не найден

  • van:

    Исправьте
    В visual c++ оператор xor, пишется как ^
    16 строка получается
    r = (a < b) ^ (b == 7); // r равен true, поскольку только b == 7 верно

    • Дмитрий:

      Вы правы. Однако в наших уроках мы используем компилятор MinGW, а не Visual C++. В данном примере также можно использовать и ^ вместо xor.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *