Язык С++ включает операцию, которая может использоваться вместо оператора if else. Она называется условной операцией и записывается как ? :
Формат 1:
Выражение1 ? Выражение2 : Выражение3
Это единственная операция С++, которая требует трех операндов.
Описание алгоритма формата 1:
Если выражение1 истинно, то значением всего условного выражения буде значение выражения2. в противном случае значением всего выражения будет выражение3.
Пример 1:
5 > 3 ? 10 : 12//т.к. 5 > 3 истинно, поэтому значение всего выражения – 10, а если было бы ложно то результат равен 12;
3 == 9 ? 25 :18 //т.к. 3 == 9 ложно, поэтому значение всего выражения – 18, а если бы было истина то результат равен 25;
Формат 2:
a = (B) ? s1:s2;
Где
a - идентификатор переменной левой части оператора присвоения.
B - условие принятия решения, выражение любого типа (круглые скобки вокруг условия не обязательны ).
s1:s2 - выражения с помощью которых вычисляется значение a.
Описание алгоритма формата 2:
Вычисляем значение В;
· Если В! = 0 , т.е. true, то вычисление значения переменной a производится с помощью выражения s1.
· Если В = 0 , т.е. false, то с помощью выражения s2.
Если типы, переменной левой части оператора присвоения и результата выражений s1 и s2 разные, то тип результата вычисления выражения преобразуется к типу переменной a в соответствии с правилами преобразования.
Пример 2:
#include <iostream>
Int main ()
{
using namespace std;
int a,b;
cout << “Введите два числа:”;
cin >>a >> b;
cout << “Большее из ” << a << “ и ” << b;
int c = a > b ? a : b; // с = а если а > b, иначе с =b
cout << “ – “ << c << endl;
return 0;
}
Иначе это выглядит с оператором if:
int c;
if ( a > b)
c = a;
else c = b;
Операция «запятая» в операторе if.
Операция «запятая» в операторе if принимается, если надо группу операторов рассматривать как один оператор, как в описании условия, так и в перечислении списка операторов.
I случай
Список операторов и выражений трактуется как единое выражение и вычисляется слева на право:
Условие
if ( с = a + b , c > d ) {список операторов}
Оператор
1.) Вычисляем с = a + b.
2.) Анализ c > d.
Если два условия: с равно сумме а и b - истина, а так же с больше d тоже истина, то выполняется список операторов.
II случай
if (a > b) q = 1, printf (……);
если а > b истина, то выполняются два оператора, разделенные запятой.
Список операторов рассматривается как один составной оператор.