| |
BIGLIB |
| большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно |
|
| |
ФАНТАСТИКА |
| фентези,
фантастика, фантастические повести |
|
| |
ФИЛОСОФИЯ |
книги, которые заставляют
задуматься над окружающим тебя миром.
|
|
| |
МЕДИЦИНА |
медицинские книги,
методички,
народные лечебники |
|
| |
КУЛИНАРИЯ |
рецепты
тортов, консервирование,
все о спиртных
напитках. |
|
| |
СТИХИ |
| стихи популярных
и не очень авторов |
|
| |
ТВОРЧЕСТВО |
| народное творчество,
стихи, песни и т.д. |
|
| |
ЮМОР |
| анекдоты, приколы,
смешные истории |
|
| |
ЭРОТИКА |
| эротические рассказы,
книги о технике секса,
кама-сутра и др. |
|
|
| |
 |
условное-выражение
Выражения с константами не могут содержать приводимых
ниже операций, если эти операции не содержатся в операнде
операции sizeof:
- присваивание
- декремент
- вызов функции
- запятая
Описание операций
Операциями называются лексемы, вызывающие некоторые вы-
числения спеременными ипрочими объектами, указанными в выра-
жении. Turbo C++ имеетособенно богатый набор операций, вклю-
чающий в себя помимо обычных арифметических и логических
операций средства манипуляции с данными на битовом уровне,
доступа к компонентам структур иобъединений, а такжеоперации
с указателями (установка и обращение по ссылке).
Расширения C++ предлагают дополнительные операции для
- 23 -
доступа к компонентам класса и их объектам, атакже механизм
перегрузки операций. Перегрузка позволяет переопределять
действие любых стандартных операций применительно к объектам
заданного класса. В данном разделе мы ограничимся рассмотре-
нием стандартных операций TurboC++. Перегрузка рассматрива-
ется, начиная со стр.124 оригинала.
После определения стандартных операций мы обсудим типы
данных и объявления, а также объясним, как они влияют на
действие каждой операции. Затем мы перейдем к рассмотрению
синтаксиса построения выражений с помощью операций, пунктуа-
торов и объектов.
Операции в Turbo C++ определяются следующим образом:
операция: одно из
[] () . -> ++ --
& * + - тильда !
sizeof / % << >> <
> <= >= == != ^
\! && \!\! ?: = *=
/= %= += -= <<= >>=
&= ^= \!= , # ##
Операции # и ## используются только препроцессором (см.
стр. 133 оригинала).
Следующие операции являются специфичными для C++:
:: .* ->*
За исключением операций [], () и ?:, служащих для запи-
си выражений в скобках, многосимвольные операции рассматри-
ваются в качестве одной лексемы. Лексема одной и той же опе-
рации может иметьнесколько интерпретаций, в зависимости от
контекста. Например,
A * B Умножение
*ptr Обращение по ссылке
A & B Поразрядное И
&A Операция адресации
int & Модификатор указателя (C++)
label: Метка оператора
a ? x : y Условный оператор
void func(int n); Объявление функции
a = (b+c)*d; Выражение со скобками
a, b, c; Выражение с запятой
func(a, b, c); Вызов функции
a = -b; Поразрядное вычитание (дополнение до
единицы)
-func() (*delete a;*) Деструктор (C++)
Унарные операции
& Операция адресации
* Операция обращения по ссылке
+ Унарный плюс
- Унарный минус
тильда Поразрядное дополнение (дополнение до
единицы)
! Логическое отрицание
- 24 -
++ Префикс: пред- инкремент;
Постфикс: пост- инкремент
-- Префикс: пред- декремент;
Постфикс: пост- декремент
Бинарные операции
Операции типа сложения + Бинарный плюс (сложение)
- Бинарный минус (вычитание)
Операции типа умножения * Умножение
/ Деление
% Остаток от деления
Операции сдвига << Сдвиг влево
>> Сдвиг вправо
Поразрядные операции & Поразрядное И
^ Поразрядное исключающее ИЛИ
\! Поразрядное включающее ИЛИ
Логические операции && Логическое И
\!\! Логическое ИЛИ
Операторы присваивания = Присваивание
*= Присвоить произведение
/= Присвоить частное
%= Присвоить остаток
+= Присвоить сумму
-= Присвоить разность
<<= Присвоить сдвиг влево
>>= Присвоить сдвиг вправо
&= Присвоить поразрядное И
^= Присвоить поразрядное исключающее
ИЛИ
\!= Присвоить поразрядное ИЛИ
Операции отношения < Меньше
> Больше
<= Меньше или равно
>= Больше или равно
Операции равенства == Равно
!= Не равно
Операции выбора . Прямой селектор компонента
компонента -> Косвенный селектор компонента
Операции с компонентами :: Доступ/разрешение контекста
класса .* Обращение через указатель
к компоненту класса
->* Обращение через указатель
к компоненту класса
Условные операции a ? x : y "Если a то x иначе y"
Операция запятой , Вычислить, например, a, b, c
слева - направо
Функции этих операций,также как их синтаксис, приоритет
и свойства ассоциативности рассматриваются, начиная со стр.
73 оригинала.
Пунктуаторы
В TurboC++ пунктуаторы, также называемые разделителями,
определяются следующим образом:
- 25 -
пунктуатор: одно из
[ ] ( ) (* *) , ; : ... * = #
Квадратные скобки
[] (открывающая и закрывающая квадратные скобки) указы-
вают на индексы одно- и многомерных массивов:
char ch, str[] = "Stan"
int mat[3][4]; /* матрица 3 x 4 */
ch = str[3]; /* 4-й элемент */
...
Круглые скобки
() (открывающая и закрывающая круглыескобки) группируют
выражения, выделяют условные выражения и указывают на вызовы
функций и параметры функций:
d = c * (a + b); /* переопределение нормального приори-
тета */
/* выполнения операций */
if (d == z) ++x; /* важно при использовании условных
операций */
func(); /* вызов функции без аргументов */
int (*fptr)(); /* объявление указателя функции */
fptr = func; /* отсутствие () означает указатель функ-
ции */
void func2(int n); /* объявление функции с аргументами */
Рекомендуетсяиспользовать круглые скобки в макроопреде-
лениях, что позволит избежать возможных проблем с приорите-
тами операций во время расширения:
#define CUBE(x) ((x) * (x) * (x))
Использование круглых скобок для изменения нормальных
приоритетов операцийи правил ассоциативности см. на стр.76
оригинала.
|
adfun.ru
|
|
|
|