В условных инструкциях, в инструкциях цикла, как правило используются сравнения вида x > 0 или a != b (числа a и b не равны), то есть некоторое логическое выражение. В таких выражениях как правило используются операции сравнения (равно, неравно, меньше, больше и т.д.).
В языке C подобные операции возвращают значение типа int, либо 0, что считается ложью, либо 1, которое означает истину. В языке C++ для этого есть специальный логический тип bool.
Переменные логического типа bool принимают два значения: true (истина) и false (ложь). Также любое целочисленное выражение можно трактовать, как логическое выражение, при этом нулевое целое число означает ложь, а ненулевое — истину. Таким образом, если вместо условия написать false или 0, то оно будет всегда ложно, если же указать true, 1 или любое ненулевое число, то условие будет истинно.
Как правило, в качестве проверяемого условия используется результат вычисления одного из следующих операторов сравнения:
| < | Меньше — возвращает true, если первый операнд меньше второго. |
| > | Больше — возвращает true, если первый операнд больше второго. |
| <= | Меньше или равно. |
| >= | Больше или равно. |
| == | Равенство. Возвращает true, если два операнда равны. |
| != | Неравенство. Возвращает true, если два операнда неравны. |
Например, условие (x * x < 1000) означает “значение x * x меньше 1000”, а условие (2 * x != y) означает “удвоенное значение переменной x не равно значению переменной y”.
Будьте аккуратны: оператор == (два знака равенства) — это проверка на равенство двух выражений, а оператор = (один знак равенства) — это присваивание одной переменной значения выражения и использование его в условии оператора ветвления в большинстве случаев является ошибкой.
Рассмотрим эту типичную ошибку на следующем примере:
int a, b;
cin >> a >> b;
if (a = b)
{
cout << "Числа равны" << endl;
}
else
{
cout << "Числа не равны" << endl;
}
Здесь по ошибке вместо операции сравнения == использована операция присваивания =. Поэтому при любых значениях a и b переменной a будет присвоено значение переменной b, при проверке истинности выражения a = b. Но оператор присваивания еще и возвращает значение, поэтому если значение b было ненулевым (а это интерпретируется, как истина), то программа выведет строку "Числа равны", а если нулевым — то строку "Числа не равны". При этом значение переменной a может быть вообще любым.