- •32) Операция присваивания
- •Арифметические операции
- •Логические операции
- •Операции отношения
- •Сдвиговые операции
- •4.6. Операция «,» (запятая)
- •35) Как вводить и выводить информацию
- •Форматированный вывод данных
- •Форматированный ввод данных
- •39) Оператор с предусловием (while)
- •Цикл с постусловием (do…while)
- •40) Цикл с параметром (for)
- •42) Оператор return
- •Оператор goto
- •Оператор break
- •Оператор continue
Сдвиговые операции
Операции арифметического сдвига применяются в целочисленной арифметике и обозначаются как: - >> - сдвиг вправо; - << - сдвиг влево.
Общий синтаксис осуществления операции сдвига:
объект = выражение << количество разрядов;
34) Преобразование типов при присваивании.
При присваивании значение правой части преобразуется к типу левой. И здесь необходимо быть внимательным, так как при некорректном использовании операций присваивания могут возникнуть неконтролируемые ошибки. Так, при преобразовании int в char старший байт просто отбрасывается.
Если объявлены: float x; int i; то как x=i; так и i=x; приводят к преобразованиям. При этом float преобразуется в int отбрасыванием дробной части.
Тип double преобразуется во float округлением.
Длинное целое преобразуется в более короткое целое и переменные типа char посредством отбрасывания лишних битов более высокого порядка.
При передаче данных функциям также происходит преобразование типов.
В любом выражении преобразование типов может быть осуществлено явно. Для этого достаточно перед любым выражением поставить в скобках идентификатор соответствующего типа.
Вид записи операции: (тип) выражение;
Ее результат - значение выражения, преобразованное к заданному типу представления.
Операция приведения типа вынуждает компилятор выполнить указанное преобразование, но ответственность за последствия возлагаются на программиста. Рекомендуется использовать эту операцию в исключительных случаях.
Например:
double x;
int n=6, k=4;
1) x=n/k; - дробная часть будет отброшена
2) x=(double)n/k; - использование операции приведения типа здесь позволяет избежать округления результата деления целочисленных операндов.
Другой пример:
int i=100000, j=100000;
long long k;
k=(long long)i*j; - использование операции приведения типа здесь позволяет избежать переполнения типа int.
4.6. Операция «,» (запятая)
Данная операция используется для организации заданной последовательности вычисления выражений (обычно используется там, где по синтаксису допустима только одна операция, а необходимо разместить две и более, например, в операторе for). Форма записи:
выражение_1, …, выражение_N;
выражения 1, 2,…, N вычисляются последовательно друг за другом и результатом операции становится значение последнего выражения N, например:
m = ( i = 1, j = i ++, k = 6, n = i + j + k );
получим последовательность вычислений: i =1, j =i =1, i =2, k=6, n=2+1+6,и в результатеm=n=9.
4.7. Приоритеты операций(по убыванию, чертой разделены разные приоритеты)
Операция |
Краткое описание |
Использование |
Порядок выполнения |
Унарные операции |
|
|
|
. |
Доступ к полю или методу |
объект . поле |
Слева направо |
-> |
Доступ к полю или методу по указателю |
указатель -> поле |
|
[] |
Индексирование |
переменная[выражение] |
|
() |
Вызов функции |
ID(список_выр.) |
|
++ |
Префиксный инкремент |
++lvalue |
Справа налево |
-- |
Префиксный декремент |
--lvalue |
|
++ |
Постфиксный инкремент |
lvalue++ |
|
-- |
Постфиксный декремент |
lvalue-- |
|
~ |
Побитовое НЕ |
~выражение |
|
! |
Логическое НЕ |
!выражение |
|
- |
Унарный минус |
-выражение |
|
+ |
Унарный плюс |
+выражение |
|
* |
Раскрытие указателя |
*выражение |
|
& |
Адрес |
&выражение |
|
sizeof |
Размер объекта или типа |
sizeof(выражение или тип) |
|
() |
Приведение типа |
(тип)выражение |
|
Бинарные и тернарная операции |
|
|
|
* |
Умножение |
выражение * выражение |
Слева направо |
/ |
Деление |
выражение / выражение |
|
% |
Получение остатка |
выражение % выражение |
|
+ |
Сложение |
выражение + выражение |
|
- |
Вычитание |
выражение – выражение |
|
<< |
Сдвиг влево |
выражение << выражение |
|
>> |
Сдвиг вправо |
выражение >> выражение |
|
< |
Меньше |
выражение < выражение |
|
<= |
Меньше или равно |
выражение <= выражение |
|
> |
Больше |
выражение > выражение |
|
>= |
Больше или равно |
выражение >= выражение |
|
== |
Равно |
выражение == выражение |
|
!= |
Не равно |
выражение != выражение |
|
& |
Побитовое И |
выражение & выражение |
|
^ |
Побитовое исключающее ИЛИ |
выражение ^ выражение |
|
| |
Побитовое ИЛИ |
выражение | выражение |
|
&& |
Логическое И |
выражение && выражение |
|
|| |
Логическое ИЛИ |
выражение || выражение |
|
?: |
Условная операция (тернарная) |
выражение ? выражение :выражение |
|
= |
Присваивание |
lvalue = выражение |
Справа налево |
+= -= *= /= %= <<= >>= &= |= ^= |
Сложение, умножение и др. с присваиванием |
lvalue += выражение lvalue *=выражение lvalue <<= выражениеи т.д. |
|
, |
Последовательное вычисление |
выражение, выражение |
Слева направо |
sizeof Операция определения размера объекта или типа
В C++ различают два варианта этой операции. В первом случае операндом может быть любое выражение. Это выражение записывается справа от символа операции. Значением выражения является размер конкретного объекта в байтах. Во втором случае операндом является имя типа. Это выражение записывается в скобках непосредственно за символом операции. Значением выражения является размер конкретного типа данных в байтах. Результатом этой операции является константа типа size_t. Этот производный целочисленный беззнаковый тип определяется конкретной реализацией.