КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

Turbo C++ Version 1.0 Programmer’s Guide

Комментировать

LIB.com.ua [электронная библиотека]: : TURBO C++ Version 1.0 Programmer’s Guide

Префиксная операция декремента, также известная как
предекремент, имеет следующий синтаксис:

—унарное-выражение

и подчиняется тем же правилам, что и операция префикс-
ного инкремента, за исключением того, что единица перед вы-
числением выражения вычитается.

Унарные операции

Существует шесть унарных операций (кроме ++ и —):
. * + — тильда и !. Их синтаксис:

унарная-операция выражение-приведения

выражение-приведения:
унарное-выражение
(имя-типа) выражение-приведения

Операция адресации &

Символ & также используется в С++ для задания ссылочных
типов данных. См. стр.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.

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *