Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PYaVU_s.doc
Скачиваний:
44
Добавлен:
24.02.2016
Размер:
665.09 Кб
Скачать
      1. Преобразования type-cast

Явное преобразование типа может быть сделано посредством type-cast. Преобразования type-cast имеют следующую синтаксическую форму

(<type-name)<operand>,

где <type-name> специфицирует особенности типа, а <operand> является величиной, которая должна быть преобразована к специфицированному типу (имена типов рассмотрены в разделе 4.10).

Преобразование операнда осуществляется в процессе присвоения его переменной типа <type-name>. Правила преобразования для операции присваивания (смотри раздел 5.7.1) допустимы для преобразований type-cast полностью. Имя типа void может быть использовано в операции cast, но результирующее выражение не может быть присвоено любому объекту.

      1. Преобразования, выполняемые операциями

Преобразования, выполняемые операциями Си, зависят от самих операций и от типа операнда или операндов. Многие операции выполняют "обычные арифметические преобразования", которые описаны в разделе 5.3.1.

Си разрешает некоторую арифметику с указателями. В адресной арифметике целые величины преобразуются к определенным адресам памяти (для получения информации смотрите аддитивные операции в разделе 5.3.6 и индексные операции в разделе 5.2.5).

      1. Преобразования при вызовах функций

Тип преобразования, выполняемый над аргументами в вызове функции, зависит от того, было ли forward объявление, определяющее типы аргументов для вызываемой функции.

Если forward объявление было и оно включает определение типов аргументов, то компилятор осуществляет контроль типов. Процесс контроля типов подробно описан в разделе 7.4.1. "Фактические аргументы".

Если forward объявления не было, или если в forward объявлении опущен список типов аргументов, то над аргументами вызываемой функции производятся только обычные арифметические преобразования. Преобразования производятся независимо для каждого аргумента вызова. Смысл этих преобразований сводится к тому, что величины типа float преобразуются к double, величины типов char и short преобразуются к int, величины типов unsigned char и unsigned short преобразуются к unsigned int. Если поддерживаются специальные ключевые слова near, far, huge, то могут быть также сделаны неявные преобразования адресных величин, посылаемых в функцию. Эти неявные преобразования могут быть переопределены заданием в forward объявлении списка типов аргументов, что позволит компилятору выполнить контроль типов. Смотрите системную документацию о преобразованиях указателей.

  1. Операторы

    1. Введение

Операторы Си управляют процессом выполнения программы. В Си, как и в других языках программирования, имеются условные операторы, операторы цикла, выбора, передачи управления и т.д. В этом разделе описываются операторы Си в алфавитном порядке. Ниже представлен список этих операторов:

break

<compound>

continue

do

<expression>

for

goto

if

<null>

return

switch

while

Операторы Си состоят из ключевых слов, выражений и других операторов. В операторах Си допустимы следующие ключевые слова:

break

default

for

return

case

goto

switch

continue

else

if

while

Выражениями в операторах Си являются выражения, описанные в разделе 5 "Выражения и присваивания". Операторами, допустимыми внутри операторов Си, могут быть любые операторы, описанные в этом разделе. Оператор, который является компонентом другого оператора, называется "телом" включающего оператора.Часто оператор-тело является составным оператором, состоящим из одного или более операторов. Составной оператор ограничивается фигурными скобками. Все другие операторы Си заканчиваются точкой с запятой (;).

Любой из операторов Си может быть спереди помечен меткой, состоящей из имени и двоеточия. Операторные метки опознаются только оператором goto и поэтому рассматриваются в разделе 6.8 "goto и помеченные операторы".

Порядок выполнения программы Си совпадает с порядком расположения операторов в тексте программы, за исключением тех случаев, когда оператор явно передает управление в другую часть программ .