3.2. Операторы отношения (сравнения) и логические
В выражениях оператор отношения и логический оператор слово oтношение обозначает взаимоотношение двух величин, т. е. результат их сравнения, а слово логический обозначает способ, которым объединяются истинное и ложное значения. Поскольку операторы отношения образуют истинный или ложный результат, они часто используются совместно с логическими операторами. Именно по этой причине они обсуждаются здесь вместе.
Операторы отношения и логические перечислены в табл. 3.1. Обратите внимание на отношения равенства и неравенства: в С++ не равно обозначается знаками !=, а равно - двойным знаком равенства, ==. В С++ результат операции отношения или логической образует результат типа bool. Другими словами, результат операции отношения или логической всегда равен либо true, либо false.
Таблица 3.1. Операторы отношения и логические в С++
Операторы отношения |
|
Оператор |
Значение |
> |
Больше чем |
>= |
Больше чем или равно |
< |
Меньше чем |
<= |
Меньше чем или равно |
== |
Равно |
!= |
Не равно |
Операторы логические |
|
Оператор |
Значение |
&& |
И |
!! |
ИЛИ |
! |
НЕ |
Замечание
Для старых компиляторов результат операции отношения и логической может быть целым числом, принимающим значение 0 или 1. Это различие носит в основном академический характер, потому что С++, как это уже отмечалось, автоматически преобразует true в 1, a false в 0 и наоборот.
Операнды, участвующие в операции отношения, могут принадлежать почти любому типу; необходимо только, чтобы их сравнение имело смысл. Операнды логической операции должны образовывать истинный или ложный результат. Поскольку ненулевое значение истинно, а нулевое ложно, это означает, что логические операторы допустимо использовать с любым выражением, дающим нулевой или ненулевой результат. Логические операторы используются для поддержки базовых логических операций И (AND), ИЛИ (OR) и НЕ (NOT), согласно следующей таблице истинности:
Р |
q |
p И q |
p ИЛИ q |
НЕ р |
Ложь |
Ложь |
Ложь |
Ложь |
Истина |
Ложь |
Истина |
Ложь |
Истина |
Истина |
Истина |
Истина |
Истина |
Истина |
Ложь |
Истина |
Ложь |
Ложь |
Истина |
Ложь |
Оба типа операторов, и логические, и отношения, имеют более низкий приоритет, чем арифметические операторы. Это означает, что выражение вроде 10 > 1 + 12 дает тот же результат, что и вариант 10 > (1 + 12). Результат, разумеется, ложен.
С помощью логических операторов можно объединять любое количество операторов отношения. Например, в этом выражении объединены три оператора отношения:
var > 15 || !(10< count) && 3 <= item
3.3. Операторы выбора в С++
Язык С++ предоставляет программисту три типа структур выбора в форме операторов. В операторе выбора if некоторое действие либо выполняется (выбирается), если условие истинно, либо пропускается, если это условие ложно. В операторе выбора if..else некоторое действие выполняется, если условие истинно, и выполняется другое действие, если это условие ложно. В операторе выбора switch выполняется одно из набора различных действий в зависимости от значения некоторого выражения. В языке С++ также существует четвертый оператор выбора - тернарный условный оператор ?:, который является альтернативой оператору if..else.
Оператор if является структурой с одиночным выбором, поскольку в нем выбирается или игнорируется одно действие. Оператор if..else является структурой с двойным выбором, поскольку в нем выбор происходит между двумя альтернативными действиями. Оператор switch является структурой с множественным выбором, поскольку в нем выбор происходит из нескольких различных действий.
