Использование оператора if без ветки else

Логические операторы и выражения

Оператор?: и сокращенная запись для if-else

В некоторых случаях конструкция if-else может оказаться громоздкой по сравнению с операторами, расположенными в ней. Например, для выбора максимума из двух чисел можно написать следующую программу:

int maximum;

if (x>y) {

maximum=x;

} else {

maximum=y;

}

Посмотрите, здесь переменная maximum встречается целых три раза, и весь фрагмент кода состоит из шести строчек. Для сокращения записи до одной строки служит оператор?:. Посмотрите, как перепишется код с ее помощью:

int maximum = x>y? x: y;

В общем виде оператор?: действует так:

<тип значения> <переменная> =

<проверяемое условие>? <значение для true>

: <значение для false>;

Оператор?: не обязан возвращать значение, другими словами, это значение может иметь тип void. Пример:

x>y? cout << "x>y": cout << "y>=x";

В качестве проверяемого выражения оператор if ожидает выражение, значение которого равно true или false. Такие выражения называются логическими. Внутри логических выражений могут быть другие выражения, но последняя операция (операция с наименьшим приоритетом) должна возвращать значение логического типа bool. Рассмотрим условие, которое присутствует в программе, проверяющей число на кратность 3:

if (number%3 == 0) {

}

Здесь % - это арифметическая операция взятия остатка от деления числа number на 3; остаток от деления на 3 может быть 0, 1 или 2. Результат операции сравнения == может принимать два значения: true (истина) и false (ложь); таким образом, результат этой операции имеет тип bool. При желании рассмотренный фрагмент кода можно переписать так:

bool isMultiply3 = number%3==0;

if (isMultiply3) {

}

Здесь результат сравнения number%3==0 присваивается переменной isMultiply3. Согласно приоритету вначале выполняется операция %, затем производится сравнение ==, дающее true или false, и последним происходит присваивание =.

В следующей таблице приведены операции сравнения.

Оператор Название Пример
< Меньше x < y
> Больше x > y
<= Меньше либо равно x <= y
>= Больше либо равно x >= y
== Равно x == y
!= Не равно x!= y

В следующей таблице перечислены логические операции:

Оператор Описание Пример
! Не !(a > b)
&& И (5 < a) && (a < 10)
|| Или (a == 5) || (a == 10)

Напомним таблицу истинности для логических операций

x y !x x&&y x||y
true true true true true
true false - false true
false true false false true
false false - false false

В своём исходном виде условная конструкция if-else предназначена для выбора между двумя альтернативами: если заданное условие истинно, то выполняется первая альтернатива, иначе – вторая. Например, в следующем фрагменте кода выполняется проверка того, является ли буква гласной:

if (<буква является гласной>) {

cout << "гласная\n";

} else {

cout << "согласная\n";

}

В некоторых случаях конструкция if-else может быть использована без ветки else. В следующих темах мы рассмотрим ряд содержательных примеров, когда данная конструкция применяется именно в таком виде. Сейчас же обратимся к несколько искусственному примеру: перепишем приведённую выше программу проверки буквы на гласность без использования ветки else. Для этого заметим, что, какой бы ни была буква, набор символов «гласная» выводится в любом случае, а приставка «со» - только в случае согласной буквы. Поэтому программа может состоять из двух шагов:

  • вывести «со», если буква согласная;
  • вывести «гласная» в любом случае.

В виде программного кода это выглядит так:

if (<буква является согласной>) {

cout << "со";

}

cout << "гласная\n";


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  




Подборка статей по вашей теме: