Лекции / Тельминов (мб) / LECS3
.DOCпреобразование с проверкой static_cast<type>(expr) во время компиляции преобразование без проверки reinterpret_cast<type>(expr) константное преобразование const_cast<type>(expr) ____________________________________________________________________ sizeob размер объекта в байтах sizeof expr справа налево
размер типа в байтах sizeof (type) + + префиксный инкремент + + lvalue
(j = + + i; равнозначно i = i+1; j=i;) префиксный декремент lvalue
(j = i; равнозначно i = i1; j=i;) дополнение lvalue
(поразрядное логическое НЕ) ! логическое НЕ ! ezpr унарный минус expr + унарный плюс + expr & адрес & lvalue * разименование expr new - создать (выделить память) new type
- создать (выделить память и
проинициализировать) new type (expr_lst)
(например new int(99))
- размещает массив new type [expr]
(например new char [100])
- создать (разместить) new (expr_lst) type
для классов
- создать (разместить и
инициализировать) new (exp_lst) type (expr_lst)
для классов
delete Уничтожить (освободить память) delete pointer
Уничтожить массив delete [ ] pointer type Приведение типа (type) expr
(например (int) i) ____________________________________________________________________
справа налево
выбор компонента object .* pointer
выбор компонента pointer pointer ____________________________________________________________________
слева направо
умножение expr expr
деление expr expr
% остаток от деления
(деление по модулю) expr % expr
___________________________________________________________________
cлева направо
+ сложение expr + expr
вычитание expr expr ____________________________________________________________________ слева направо
<< сдвиг влево expr << expr
>> сдвиг вправо expr >> expr ____________________________________________________________________ слева направо
< меньше expr < expr
<= меньше или равно expr <= expr
> больше expr > expr
>= больше или равно expr >= expr ____________________________________________________________________ слева направо
= = равно expr = = expr
! = не равно expr ! = expr
& побитовое И (AND) expr & expr ____________________________________________________________________ слева направо
^ побитовое исключающее ИЛИ (OR) expr ^ expr
____________________________________________________________________ слева направо
| побитовое ИЛИ expr | expr ____________________________________________________________________
слева направо
&& логическое И expr && expr
____________________________________________________________________ слева направо
| | логическое ИЛИ expr | | expr ____________________________________________________________________
? : условное выражение expr ? expr : expr справа налево
____________________________________________________________________ справа налево
= простое присваивание lvalue = expr
* = умножение и присваивание lvalue *= expr
/ = деление и присваивание lvalue / = expr
% = остаток и присваивание lvalue % = expr
+ = сложение и присваивание lvalue + = expr
= вычитание и присваивание lvalue = expr
<< = сдвиг влево и присваивание lvalue << = expr
>> = сдвиг вправо и присваивание lvalue >> = expr
& = И и присваивание lvalue & = expr
| = ИЛИ и присваивание lvalue | = expr
^ = исключающее ИЛИ и присваивание lvalue ^ = expr
____________________________________________________________________
____________________________________________________________________ справа налево throw генерация исключения throw expr ____________________________________________________________________ слева направо
, запятая (последовательность) expr , expr ____________________________________________________________________
Рассмотрим операции для предопределенных типов данных. Отметим два правила :
-
Порядок вычисления подвыражений внутри выражений не определен.
Например,
int i = 1;
v [i] = i + + ;
может быть v [1] = 1 или v [2] =1, либо еще что-нибудь.
-
Применяйте круглые скобки, когда сомневаетесь в приоритетах операций или порядке вы
-
числений.
Операторы сравнения и равенства
> = , < , < = , > , = = , ! =
Результат true, если условие выполняется, иначе false. Старое соглашение false – 0, а true – не ноль выполняется
Пример if (A > = 10)
Логические операторы
! , && , | |
expr1 expr2 ! expr1 expr1 && expr2 expr1 | | expr2
0 0 1 0 0
1 0 0 0 1
0 1 1 0 1
1 1 0 1 1
Пример. 0 && i + +; / / увеличения i не будет.
Побитовые логические операции (поразрядные) применяются к каждому биту целочисленных данных.
Бит expr1 Бит expr2 ~a a & b a ^ b a | b
a b
0 0 1 0 0 0
0 1 1 0 1 1
1 0 0 0 1 1
1 1 0 1 0 1
Например (0 1 0 1) | (0 1 1 0) (0 1 1 1)
5 | 6 7
Операторы сдвига
<< Побитовый сдвиг влево
expr1 << expr2
Выражение expr1 (его результат) сдвигается влево на число бит, которые вычисляются выражением expr2.
Например, i = 7; i << 2; // i = 28.
>> Побитовый сдвиг вправо работает аналогично <<, только expr1 сдвигается вправо, а не влево.
Например, i = 20; i >> 2; // i = 5.
Условное выражение
expr1 ? expr2 : expr3
Условие вычисляется первым
Если условие = = TRUE, вычисляется expr2, иначе вычисляется expr3.
Например, x = (y < z) ? y : z ;
y z x
5 8 5
10 2 2
Оператор присваивания (инструкция)
a опер = b; a = a опер b;