# Логические операции в C++ В С++ существует три логические операции: 1. Логическая операция **И &&**, нам уже известная; 2. Логическая операция **ИЛИ ||**; 3. Логическая операция **НЕ !** или логическое отрицание. Логические операции образуют сложное (составное) условие из нескольких простых (два или более) условий. Эти операции упрощают структуру программного кода в несколько раз. Да, можно обойтись и без них, но тогда количество ифов увеличивается в несколько раз, в зависимости от условия. В следующей таблице кратко охарактеризованы все логические операции в языке программирования С++, для построения логических условий. | Условие| Описание| | --- | --- | | a == 3 && b > 4| Составное условие истинно, если истинны оба простых условия.| | a == 3 || b > 4| Составное условие истинно, если истинно, хотя бы одно из простых условий.| | !(a == 3)| Условие истинно, если a не равно 3.| Сейчас следует понять разницу между логической операцией И и логической операцией ИЛИ , чтобы в дальнейшем не путаться. Пришло время познакомиться с типом данных bool –логический тип данных. Данный тип данных может принимать два значения: true (истина) и false (ложь). Проверяемое условие в операторах выбора имеет тип данных bool. Рассмотрим принцип работы следующей программы, и все будет понятно со всеми этими логическими операциями. // or_and_not.cpp: определяет точку входа для консольного приложения. #include "stdafx.h" #include using namespace std; int main(int argc, char* argv[]) { // объявление логических переменных bool a1 = true, a2 = false; bool a3 = true, a4 = false; cout << "Tablica istinnosti log operacii &&" << endl; // логическое И cout << "true && false: " << ( a1 && a2 ) << endl << "false && true: " << ( a2 && a1 ) << endl << "true && true: " << ( a1 && a3 ) << endl << "false && false: " << ( a2 && a4 ) << endl; cout << "Tablica istinnosti log operacii ||" << endl; // логическое ИЛИ cout << "true || false: " << ( a1 || a2 ) << endl << "false || true: " << ( a2 || a1 ) << endl << "true || true: " << ( a1 || a3 ) << endl << "false || false: " << ( a2 || a4 ) << endl; cout << "Tablica istinnosti log operacii !" << endl; // логическое НЕ cout << "!true: " << ( ! a1 ) << endl << "!false: "<< ( ! a2 ) << endl; system("pause"); return 0; } Строки 10 и 11 вам должны быть понятны, так как здесь инициализируются переменные типа bool. Причем каждой переменной присваивается значение true или false. Начиная с 15-й строки и заканчивая 19-й, показано использование логических операций. Результат работы программы: Tablica istinnosti log operacii && ` true && false: 0 false && true: 0 true && true: 1 false && false: 0 Tablica istinnosti log operacii || true || false: 1 false || true: 1 true || true: 1 false || false: 0 Tablica istinnosti log operacii ! !true: 0 !false: 1 Для продолжения нажмите любую клавишу . . . Наверное, у вас возникает вопрос: "А что это за нолики и единички?". Если есть вопрос, то на него нужно ответить. Отвечаю: "Нолик-это представление логического значения false (ложь), ну а единички – это логическое true (истина)". Коротко поясню некоторые моменты. Составное условие с использованием логического И истинно только в том случае, когда истинны оба простых условия. Во всех остальных случаях составное условие ложно. Составное условие с использованием логического ИЛИ ложно только в том случае, когда ложные оба простых условия. Во всех остальных случаях составное условие истинно. Логическое отрицание НЕ является унарной операцией, и она не комбинирует два условия, в отличие от логических операций И и ИЛИ, которые являются бинарными операциями. Логическое отрицание позволяет перевернуть смысл условия, что в некоторых случаях очень удобно. Условие с логическим отрицанием истинно в том случае, если это же условие ложно без отрицания, и наоборот.