Условные выражения
Условные выражения представляют собой некоторое условие и возвращают значение типа bool, то есть значение true (если условие истинно), либо значение false (если условие ложно). К условным выражениям относятся операции отношения и логические операции.
Операции отношения
В языке программирования C++ есть следующие операции отношения:
==
Операция "равно". Возвращает true, если оба операнда равны, и false, если они не равны:
int a = 10;
int b = 4;
bool c = a == b; // false
bool d = a == 10; // true
>
Операция "больше чем". Возвращает true, если первый операнд больше второго, и false, если первый операнд меньше второго:
int a = 10;
int b = 4;
bool c = a > b; // true
<
Операция "меньше чем". Возвращает true, если первый операнд меньше второго, и false, если первый операнд больше второго:
bool c = 10 < 4; // false
<=
Операция "меньше или равно". Возвращает true, если первый операнд меньше или равен второму, и false, если первый операнд больше второго:
bool c = 10 <= 4; // false
bool d = 10 <= 14; // true
>=
Операция "больше или равно". Возвращает true, если первый операнд больше или равен второму, и false, если первый операнд меньше второго:
bool c = 10 >= 4; // true
bool d = 10 >= 14; // false
!=
Операция "не равно". Возвращает true, если первый операнд не равен второму, и false, если оба операнда равны:
bool c = 10 != 4; // true
bool d = 4 != 4; // false
Обычно операции отношения применяются в условных конструкциях типа if...else, которые будут рассмотрены далее.
Логические операции
Логические операции обычно объединяют несколько операций отношения. К логическим операциям относят следующие:
! (операция отрицания)
Унарная операция, которая возвращает true, если операнд равен false. Если операнд равен true, операция возвращает false.
bool a = true;
bool b = !a; // false
bool c =!10<5; // true
&& (конъюнкция, логическое умножение)
Возвращает true, если оба операнда не равны false. Возвращает false, если хотя бы один операнд равен false.
bool a = true;
bool b = false;
bool c = a && b; // false
bool d = a && true; // true
|| (дизъюнкция, логическое сложение)
Возвращает true, если хотя бы один операнд равен true. Возвращает false, если оба операнда равны false.
bool a = true;
bool b = false;
bool c = a || b; // true
bool d = b || false; // false
Используем одновременно несколько логических операций и операций сравнения:
#include <iostream>
int main()
{
bool a = -2 > 5; // false
bool b = 0 < 7; // true
bool c = 10 > 5 && 7 < 11; // true
bool d = a && b || c; // true
std::cout << a << "\n"; // 0
std::cout << b << "\n"; // 1
std::cout << c << "\n"; // 1
std::cout << d << "\n"; // 1
return 0;
}
Следует обратить внимание, что на консоль выводится не непосредственно true или false, а их числовые эквиваленты - 1 для true и 0 для false.
И также стоит учитывать, что операции отношения имеют больший приоритет, чем логические операции. Поэтому в выражении 10 > 5 && 7 < 11 вначале будут выполняться подвыражения - операции отношения 10 > 5 и 7 < 11, а затем собственно операция логического умножения.