Содержание
- 1 Основные операции языка программирования C++
- 1.1 Операции увеличения и уменьшения на 1 (++ и —)
- 1.2 Операция определения размера sizeof
- 1.3 Операции отрицания (-, ! и ~)
- 1.4 Деление (/) и остаток от деления (%)
- 1.5 Операции сдвига ( << и >> )
- 1.6 Операции отношения (<. <=, >, >=, ==, !=)
- 1.7 Поразрядные операции (&, |, ^)
- 1.8 Логические операции (&& и ||)
- 1.9 Условная операция (?:)
Операции делятся на унарные, бинарные и тернарную по количеству участвующих в них операндов. Большинство стандартных операций может быть переопределено (перегружено).
Одними из самых первых операци, с которыми сталкивается изучающий язык программирования C++, являются операции присваивания, поэтому рассмотрим эти операции в самом начале.
Операции присваивания (=, +=, -=, *= и т. д.)
Операции присваивания могут использоваться в программе как законченные операторы.
Формат операции простого присваивания (=):
операнд_1 = операнд_2
Первый операнд должен быть L-значением, второй — выражением. Сначала вычисляется выражение, стоящее в правой части операции, а потом его результат записывается в область памяти, указанную в левой части (мнемоническое правило: «присваивание — это передача данных «налево»»). То, что ранее хранилось в этой области памяти, естественно, теряется.
#include
int main(){
int a = 3, b = 5, с = 7;
a = b; b = a; с = с + 1;
cout << "a = " << a;
cout << "t b = " << b;
cout << "t с = " << c;
return 0;
}
Результат работы программы:
a = 5 b = 5 c = 8
ВниманиеПри присваивании производится преобразование типа выражения к типу L-значения, что может привести к потере информации.
В сложных операциях присваивания ( +=, *=, /= и т п.) при вычислении выражения, стоящего в правой части, используется и L-значение из левой части. Например, при сложении с присваиванием ко второму операнду прибавляется первый, и результат записывается в первый операнд, то есть выражение а += b является более компактной записью выражения а = а + b.
Основные операции языка программирования C++
В таблице ниже приведен список основных операций, определенных в языке C++, в соответствии с их приоритетами (по убыванию приоритетов, операции с разными приоритетами разделены чертой).
Все приведенные в таблице операции, кроме условной и sizeof, могут быть переопределены (перегружены).
| Операция | Краткое описание |
| Унарные операции | |
| :: | доступ к области видимости |
| . | выбор |
| -> | выбор |
| [ ] | индексация |
| ( ) | вызов функции |
| <тип>( ) | конструирование |
| ++ | постфиксный инкремент |
| — | постфиксный декремент |
| typeid | идентификация типа |
| dynamic_cast | преобразование типа с проверкой на этапе выполнения |
| static_cast | преобразование типа с проверкой на этапе компиляции |
| reinterpret_cast | преобразование типа без проверки |
| const_cast | константное преобразование типа |
| sizeof | размер объекта или типа |
| — | префиксный декремент |
| ++ | префиксный инкремент |
| ~ | поразрядное отрицание |
| ! | логическое отрицание |
| — | арифметическое отрицание (унарный минус) |
| + | унарный плюс |
| & | взятие адреса |
| * | разадресация |
| new | выделение памяти |
| delete | освобождение памяти |
| (<тип>) | преобразование типа |
| .* | выбор |
| ->* | выбор |
| Бинарные и тернарные операции | |
| * | умножение |
| / | деление |
| % | остаток от деления |
| + | сложение |
| — | вычитание |
| << | сдвиг влево |
| >> | сдвиг вправо |
| < | меньше |
| <= | меньше или равно |
| > | больше |
| >= | больше или равно |
| == | равно |
| != | не равно |
| & | поразрядная конъюнкция (И) |
| ^ | поразрядное исключающ |
