|
Программирование >> Перегруженные имена функций и идентификаторы
Поскольку пустое выражение обозначает несуществующее значение, такое выражение такое выражение может использоваться только как оператор выражение или как левый операнд в выражении с запятой. Выражение может явно преобразовываться к типу void. Производные типы Кроме основных арифметических типов концептуально существует бесконечно много производных типов, сконструированных из основных типов следующим образом: массивы объектов данного типа; функции, получающие аргументы данного типа и возвращающие объекты данного типа; указатели на объекты данного типа; ссылки на объекты данного типа; константы, являющиеся значениями данного типа; классы, содержащие последовательность объектов различных типов, множество функций для работы с этими объектами и набор ограничений на доступ к этим объектам и функциям; структуры, являющиеся классами без ограничений доступа; объединения, являющиеся структурами, которые могут в разное время содержать объекты разных типов. В целом эти способы конструирования объектов могут применяться рекурсивно. Объект типа void* (указатель на void) можно использовать для указания на объекты неизвестного типа. Объекты и LVALUE (адреса) Объект есть область памяти; lvalue (адрес) есть выражение, ссылающееся на объект. Очевидный пример адресного выражения - имя объекта. Есть операции, дающие адресные выражения: например, если Е - выражение типа указатель, то *Е - адресное выражение, ссылающееся на объект, на который указывает Е. Термин lvalue происходит из выражения присваивания Е1=Е2, в котором левый операнд Е1 должен быть адресным (value) выражением. Ниже при обсуждении каждого оператора указывается, требует ли он адресные операнды и возвращает ли он адресное значение. Символы и целые Символ или короткое целое могут использоваться, если может использоваться целое. Во всех случаях значение преобразуется к целому. Преобразование короткого целого к длинному всегда включает в себя знаковое расширение; целые являются величинами со знаком. Содержат символы знаковый разряд или нет, является машинно-зависимым. Более явный тип unsigned char ограничивает изменение значения от 0 до машинно-зависимого максимума. В машинах, где символы рассматриваются как имеющие знак (знаковые), символы множества кода ASCII являются положительными. Однако, символьная константа, заданная восьмеричной esc-последовательностью подвергается знаковому расширению и может стать отрицательным числом; так например, \377 имеет значение -1. Когда длинное целое преобразуется в короткое или в char, оно урезается влево; избыточные биты просто теряются. Float и douЫе Для выражений float могут выполняться действия арифметики с плавающей точкой одинарной точности. Преобразования между числами одинарной и двойной точности выполняются настолько математически корректно, насколько позволяет аппаратура. Плавающие и целые Преобразования плавающих значений в интегральный тип имеет склонность быть машинно-зависимым. В частности, направление усечения отрицательных чисел различается от машины к машине. Если предоставляемого пространства для значения не хватает, то результат не определен. Преобразование интегрального значения в плавающий тип выполняются хорошо. При нехватке в аппаратной реализации требуемых бит, возникает некоторая потеря точности. Указатели и целые Выражение целого типа можно прибавить к указателю или вычесть из него; в таком случае первый преобразуется, как указывается при обсуждении операции сложения. Можно производить вычитание над двумя указателями на объекты одного типа; в этом случае результат преобразуется к типу int или long в зависимости от машины. Unsigned Всегда при сочетании целого без знака и обычного целого обычное целое преобразуется к типу unsigned и результат имеет тип unsigned. Значением является наименьшее целое без знака, равное целому со знаком (mod 2**(размер слова)) (т.е. по модулю 2**(размер слова)). В дополнительном двоичном представлении это преобразование является пустым, и никаких реальных изменений в двоичном представлении не происходит. При преобразовании целого без знака в длинное значение результата численно совпадает со значением целого без знака. Таким образом, преобразование сводится к дополнению нулями слева. Преобразования Арифметические преобразования Большое количество операций вызывают преобразования и дают тип результата одинаковым образом. Этот стереотип будет называться обычным арифметическим преобразованием .
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |