Условные выражения


Условные выражения представляют собой некоторое условие и возвращают значение типа 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, а затем собственно операция логического умножения.