adfun.ru
| |
BIGLIB |
| большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно |
|
| |
ФАНТАСТИКА |
| фентези,
фантастика, фантастические повести |
|
| |
ФИЛОСОФИЯ |
книги, которые заставляют
задуматься над окружающим тебя миром.
|
|
| |
МЕДИЦИНА |
медицинские книги,
методички,
народные лечебники |
|
| |
КУЛИНАРИЯ |
рецепты
тортов, консервирование,
все о спиртных
напитках. |
|
| |
СТИХИ |
| стихи популярных
и не очень авторов |
|
| |
ТВОРЧЕСТВО |
| народное творчество,
стихи, песни и т.д. |
|
| |
ЮМОР |
| анекдоты, приколы,
смешные истории |
|
| |
ЭРОТИКА |
| эротические рассказы,
книги о технике секса,
кама-сутра и др. |
|
|
| |
 |
Префиксная операция декремента, также известная как
предекремент, имеет следующий синтаксис:
--унарное-выражение
и подчиняется тем же правилам, что и операция префикс-
ного инкремента, за исключением того, что единица перед вы-
числением выражения вычитается.
Унарные операции
Существует шесть унарных операций (кроме ++ и --):
. * + - тильда и !. Их синтаксис:
унарная-операция выражение-приведения
выражение-приведения:
унарное-выражение
(имя-типа) выражение-приведения
Операция адресации &
Символ & также используется в С++ для задания ссылочных
типов данных. См. стр.98 оригинала.
Операции& и * (операция * описана в следующем разделе)
используются совместно в качестве операций установки ссылки
и ображения по ссылке (разыменования). В выражении
& выражение-приведения
операнд выражение-приведениядолженявляться либо обозна-
чением функции, либо именующим выражением, обозначающим объ-
ект, не являющийся битовымполем и не имеющий спецификатор
класса памяти register. Если операнд имеет некоторый тип
type, то результатом операции будет указатель на type.
Отметим, что некоторые не являющиеся именующим выраже-
нием идентификаторы, такие как имена функций и имена масси-
вов, автоматически преобразовываются в определенном контекс-
те к типу "указатель на X". Операцию & использовать с такими
объектами можно, но такая операция будет являться избыточной
и будет отменена компилятором.
Рассмотрим следующий фрагмент:
type t1 =1, t2 = 2;
type *ptr = &t1; // инициализированный указатель
*ptr = t2; // тот же эффект, что и t1 = t2
Отметим, что type *ptr = &t1 обрабатывается как
T *ptr;
ptr = &t1;
так что присваивается не *ptr, а ptr. После инициализа-
ции ptrадресом&t1 его можно использовать для обращения по
ссылке и получить именующее выражение *ptr.
Операция обращения по ссылке *
В выражении
- 79 -
* выражение-приведения
операнд выражение-приведения должен иметь тип "указа-
тель на type", где type это любой тип. Результатом обращения
по ссылке имееттип type.Если операнд имеет тип "указатель
функции", то результатом будет являться обозначение функции;
если операндом является указатель на объект, то результатом
будет именующее выражение, обозначающее данный объект. В
следующих ситуациях результат обращения по ссылке неопреде-
лен:
1. Выражение-приведения это пустой (null) указатель.
2. Выражение-приведения это адрес динамической локаль-
ной переменной, а выполнение объемлющего блока уже заверше-
но.
Унарная операция плюс +
В выражении
+выражение-приведения
операнд выражение-приведения должен быть
арифметического типа. Результатом является значение операнда
после любых требуемых интегральных действий.
Унврная операция минус -
В выражении
-выражение-приведения
операнд выражение-приведения должен быть арифметическо-
го типа. Результатом является отрицательное значение операн-
да после любых требуемых интегральных действий.
Операция поразрядного дополнения (тильда)
В выражении
<тильда>выражение-приведения
операнд выражение-приведения должен быть интегрального
типа.Результатом является поразрядное дополнение операнда
после любых требуемых интегральных действий. Каждый бит со
значением 0 устанавливается в 1, а каждый единичный бит опе-
ранда устанавливается в 0.
Операция логического отрицания !
В выражении
!выражение-приведения
операнд выражение-приведения должен быть скалярного ти-
па. Результат иммет тип int и представляет собой логическое
отрицание операнда: 0 при ненулевом операнде и 1 в случае
нулевого операнда. Выражение !E эквивалентно выражению (0 ==
Е).
Операция sizeof
Существует два раздельных способа использования опера-
ции sizeof:
sizeof унарное-выражение
sizeof (имя-типа)
- 80 -
Размер выделяемой для каждого типа памяти зависит от
конкретной машины.
В обоихсучаяхрезультат представляет собой целочисленную
константу, выражающую размер в байтах областипамяти, занима-
емой операндом (определяемый за некоторыми исключениями ти-
пом операнда). В первом случае тип выражения операнда опре-
деляется без расчета выражения (и следовательно, без
побочных эффектов). Если операнд имеет тип char (signed или
unsigned), то операция sizeof дает в результате1. Если опе-
ранд не является параметром и имеет тип масива, то результат
представляет собой общее количество байтов в массиве (други-
ми словами, имя массива не преобразовавается к типу указате-
ля). Число элементов массива равно sizeof массив/sizeof мас-
сив[0].
Если операнд является параметром, объявленным как
массив или функция, sizeof дает размер указателя. Примени-
тельно к структурам и объединениям sizeof дает общее число
байтов, включающее любые символы-заполнители.
Целочисленный тип результата операцииsizeof называется
size_t, определенный как unsigned int в stddef.h.
Можно использовать sizeof в директивах препроцессора;
это особенность Turbo C++.
C++: В С++ sizeof(тип класса), где тип класса является
производным от какого-либо базового класса, возвращает раз-
мер базового класса.
Операции типа умножения
Существует три операции типа умножения: * / и %. Син-
таксис этих операций следующий:
выражение-типа-умножения:
выражение-приведения
выражение-типа-умножения * выражение-приведения
выражение-типа-умножения / выражение-приведения
выражение-типа-умножения % выражение-приведения
Операнды операций * (умножения) и / (деления) должны
быть арифметического типа. Операнды операции % (деление по
модулю,или остаток) должны быть интегрального типа. С опе-
рандами выполняются обычные арифметические преобразования
(см. стр.41 оригинала).
Результатом выполнения операции (операнд1 * операнд2)
является произведение двух операндов. Результатами операций
(операнд1 / операнд2) и (операнд1 % операнд2) являются част-
ное и остаток от деления, соответственно, где операнд1 де-
лится на операнд2, при условии, что операнд2 не равен нулю.
Использование операций / и % с нулевым делителем дает ошиб-
ку.
Если операнд1 и операнд2 имеют целочисленный тип, а
частное не является целым, то результаты операции следующие:
1. Если операнд1 и операнд2 имеют одинаковый знак, то
операнд1/ операнд2 есть наибольшее целое, меньшее чем истин-
ное частное, а операнд1 % операнд2 имеет тот же знак, что и
операнд1.
2. Если операнд1 и операнд2 имеют разные знаки, то опе-
ранд1/ операнд2 есть наименьшее целое, большее чем истинное-
частное, а операнд1 % операнд2 имеет тот же знак, что и опе-
ранд1.
|
adfun.ru
|
|
|
|