double arrow

Тернарный оператор


Фрагмент кода с ошибкой.

Примечание:Будьте внимательны: оператор if и оператор else неразрывны!!! Попытка вписать между ними строку кода, приведет к ошибке на этапе компилляции.

.... if(B==0){ // если B содержит ноль cout<<"You can’t divide by zero!!!";// сообщаем об ошибке } cout<<"Hello";// Ошибка!!!! Разрыв конструкции if - else!!! else{ // в противном случае cout<<"Result = "<<A/B;// выдаем результат деления А на B } ....

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

Для начала рассмотрим его синтаксис:

УТВЕРЖДЕНИЕ ИЛИ ВЫРАЖЕНИЕ?ДЕЙСТВИЕ1:ДЕЙСТВИЕ2;

Принцип действия прост - если УТВЕРЖДЕНИЕ ИЛИ ВЫРАЖЕНИЕ - истина, выполняется ДЕЙСТВИЕ1, если - ложь, выполняется ДЕЙСТВИЕ2.

Давайте рассмотрим деиствие данного оператора на примере:

# include <iostream> using namespace std; void main(){ int A,B; //объявляем две переменные   //просим пользователя ввести в них данные cout<<"Enter first digit:\n"; cin>>A; cout<<"Enter second digit:\n"; cin>>B;   /* В данном случае, если В не будет равно нулю, выполниться та команда, которая стоит после знака вопроса и на экране покажется результат деления. В противном случае выполниться команда стоящая после знака двоеточие и на экране будет сообщение об ошибке деления на нуль.*/ (B!=0)?cout<<"Result A/B="<<A<<"/"<<B<<"="<<A/B:cout<<"You can’t divide by zero!!!";   //конец программы cout<<"\n The end. \n"; }

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




# include <iostream> using namespace std; void main(){ int a,b; //объявляем две переменные   //просим пользователя ввести в них данные cout<<"Enter first digit:\n"; cin>>a; cout<<"Enter second digit:\n"; cin>>b;   /*Если, (b>a), то на место оператора ?: подставится b, в противном случае на место оператора подставится a, таким образом, то число, которое больше запишется в переменную max.*/ int max=(b>a)?b:a;   /*Если, (b<a), то на место оператора ?: подставится b, в противном случае на место оператора подставится a, таким образом, то число, которое больше запишется в переменную min.*/ int min=(b<a)?b:a;   // Вывод результата на экран. cout<<"\n Maximum is \n"<<max; cout<<"\n Minimum is \n"<<min<<"\n"; }

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







Сейчас читают про: