С++ для начинающих



Операции сравнения и логические операции


Таблица 4.2. Операции сравнения и логические операции

Символ операции

Значение

Использование

!

Логическое НЕ

!expr

Меньше

expr1 < expr2

<=

Меньше или равно

expr1 <= expr2

Больше

expr1 > expr2

>=

Больше или равно

expr1 >= expr2

==

Равно

expr1 == expr2

!=

Не равно

expr1 != expr2

&&

Логическое И

expr1 && expr2

||

Логическое ИЛИ

expr1 || expr2

Примечание. Все операции в результате дают значение типа bool

Операции сравнения и логические операции в результате дают значение типа bool, то есть true или false. Если же такое выражение встречается в контексте, требующем целого значения, true преобразуется в 1, а false – в 0. Вот фрагмент кода, подсчитывающего количество элементов вектора, меньших некоторого заданного значения:

vector<int>::iterator iter = ivec.beg-in() ;

while ( iter != ivec.end() ) {

    // эквивалентно: e1em_cnt = e1em_cnt + (*iter < some_va1ue)

    // значение true/false выражения *iter < some_va1ue

    // превращается в 1 или 0

    e1em_cnt += *iter < some_va1ue;

    ++iter;

}

Мы просто прибавляем результат операции “меньше” к счетчику. (Пара += обозначает составной оператор присваивания, который складывает операнд, стоящий слева, и операнд, стоящий справа. То же самое можно записать более компактно: elem_count = elem_count + n. Мы рассмотрим такие операторы в разделе 4.4.)

Логическое И (&&) возвращает истину только тогда, когда истинны оба операнда. Логическое ИЛИ (||) дает истину, если истинен хотя бы один из операндов. Гарантируется, что операнды вычисляются слева направо и вычисление заканчивается, как только результирующее значение становится известно. Что это значит? Пусть даны два выражения:

expr1 && expr2

expr1 || expr2

Если в первом из них expr1 равно false, значение всего выражения тоже будет равным false вне зависимости от значения expr2, которое даже не будет вычисляться. Во втором выражении expr2 не оценивается, если expr1 равно true, поскольку значение всего выражения равно true вне зависимости от expr2.




Содержание  Назад  Вперед