Оператор ?:

Для проверки условия вместо оператора if можно использовать оператор ?:. Оператор имеет следующий формат:

<Переменная> = <Логическое выражение> ? <Выражение если Истина> : 
                                        <Выражение если Ложь>;

Если логическое выражение возвращает значение true, то выполняется выражение, расположенное после вопросительного знака. Если логическое выражение возвращает значение false, то выполняется выражение, расположенное после двоеточия. Результат выполнения выражений становится результатом выполнения оператора. Пример проверки числа на четность и вывода результата:

int x = 10;
std::cout << x 
   << ((x % 2 == 0) ? " - четное число" : " - нечетное число");

Обратите внимание на то, что в качестве операндов указываются именно выражения, а не инструкции. Кроме того, выражения обязательно должны возвращать какое-либо значение, причем одинакового типа. Так как оператор возвращает значение, его можно использовать внутри выражений:

int x, y;
x = 0;
y = 30 + 10 / (!x ? 1 : x);   // 30 + 10 / 1
std::cout << y << std::endl;  // 40
x = 2;
y = 30 + 10 / (!x ? 1 : x);   // 30 + 10 / 2
std::cout << y << std::endl;  // 35

В качестве операнда можно указать функцию, которая возвращает значение:

int func1(int x) {
   std::cout << x << " - четное число" << std::endl;
   return 0;
}
int func2(int x) {
   std::cout << x << " - нечетное число" << std::endl;
   return 0;
}
// ... Фрагмент опущен ...
int x = 10;
(x % 2 == 0) ? func1(x) : func2(x);

Как видно из примера, значение, возвращаемое оператором, можно проигнорировать.

Учебник C++ (MinGW-W64)
Учебник C++ (MinGW-W64) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов