Если значение выражения истинное, выполняется оператор1, иначе оператор2.,а затем оператор , стоящий за if,т.е.if задаёт альтернативу: выполнить оператор1 или оператор2, это полный if.
Возможен и короткий: if (выражение) оператор1 ; он задаёт альтернативу: выполнить или нет оператор1.Если на месте оператора1 или оператора2 нужно поставить группу операторов, их заключают в фигурные скобки и синтаксически группа становится одним оператором.
Если вместо оператора1 стоит условный оператор, то необходимо разрешить возникающую иногда коллизию; для этого есть правило: else всегда относится к ближайшему if.
If (a>b) if (x>c)m=0; else m=1;
Возможны 2 толкования этого оператора:
If (a>b) if (x>c)m=0; else m=1; (1) – по правилу это работает.
If (a>b) if (x>c)m=0; else m=1; (2)
Если нужен (2), можно If (a>b) {if (x>c)m=0;} else m=1;
Примеры.
Int a,b,m;
a)if (a>b) m=a; else m=b;
b)m=a; if (b>m) m=b;
c)m=(a+b)/2 + fabs(a-b)/2;
Все три примера решают такую задачу m=max(a,b); , но вариант a) более наглядный.
Переключатель реализует развилку на несколько направлений.
Переключающее выражение – селектор – целого типа или символьного. Константные выражения приводятся к типу селектора. Все константные выражения в одном переключателе должны иметь различные значения.
Switch передает управление тому из операторов, помеченных с помощью case, у которого значение константного выражения совпадает со значением селектора. Если же оно не совпадает ни с одним из константных выражений, то управление получает оператор, помеченный меткой default. Если нет группы default, то оператор Switch не выполнит ничего. Если выбран некоторый вариант и группа его операторов выполняется, последним в этой группе часто стоит оператор break, который выполняет выход из переключателя на оператор, следующий за ним. Если группа операторов варианта не заканчивается оператором break и никуда не передаёт управление, то выполняется группа операторов следующего варианта. #include <iostream>
using namespace std;
int main()
{int n=10,c;
for(c=10;c<18;c++)
{switch (c%n)
{case 0:cout <<"monday\n"; break;
case 1:cout <<"tusday\n"; break;
case 2:cout <<"wednesday\n"; break;
case 3:cout <<"thursday\n"; break;
case 4:cout <<"friday\n"; break;
case 5:cout <<"saturday\n"; break;
case 6:cout <<"sunday\n"; break;
default:cout <<"noday\n";
}} return 0; }
Замечание. Оператор break в составе другого оператора выполняет выход из этого другого оператора на оператор, следующий за ним.
Основные операции языка С++
(по убыванию приоритетов, в группе приоритеты одинаковые)
Олерация.
Действие
Унарные операции
++
--
Sizeof
~
!
-
+
&
*
new
delete
(тип)
Увеличение на 1
Уменьшение на 1
Размер
Поразрядное отрицание
Логическое отрицание
Унарный минус (арифметическое отрицание)
Унарный плюс
Взятие адреса
Разыменование
Выделение динамической памяти
Освобождение динамической памяти
Преобразование типа
Бинарные и тернарная операции
*
/
%
Умножение
Деление
Остаток от деления
+
-
сложение
вычитание
<<
>>
Сдвиг влево
Сдвиг вправо
<
<=
>
>=
Меньше
Меньше или равно
больше
Больше или равно
==
!=
Равно
Не равно
&
Поразрядная конъюнкция (И)
^
Поразрядная исключающее ИЛИ
|
Поразрядная дизъюнкция (ИЛИ)
&&
Логическое И
||
Логическое ИЛИ
? :
Условная операция (тернарная)
=
*=
/=
%=
+=
-=
<<=
>>=
&=
|=
^=
Присваивание
Умножение с присваиванием
Деление с присваиванием
Остаток от деления с присваиванием
Сложение с присваиванием
Вычитание с присваиванием
Сдвиг влево с присваиванием
Сдвиг вправо с присваиванием
Поразрядное И с присваиванием
Поразрядное ИЛИ с присваиванием
Поразрядное исключающее ИЛИ с присваиванием