Фрагмент кода с ошибкой.
Примечание:Будьте внимательны: оператор 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.