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

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

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

      1. Константы

Операнду - константе соответствует значение и тип представляющей его константы. Константа-символ имеет тип int. Целая константа имеет типы: int, long, unsigned int или unsigned long, в зависимости от размера целого и от того как специфицирована его величина. Константы с плавающей точкой всегда имеют тип double. Строковые литералы рассматриваются как массивы символов и обсуждаются в разделе 5.2.3.

      1. Идентификаторы

Идентификаторы именуют переменные и функции. Каждый идентификатор имеет тип, который устанавливается при его объявлении. Значение идентификатора зависит от типа следующим образом:

  • идентификаторы целых и плавающих типов представляют величины соответствующего типа;

  • идентификатор перечисляющего типа представляет значение одной константы из множества значений констант в перечислении. Значение идентификатора равно значению этой константы. Тип значения есть int, что следует из определения перечисления;

  • идентификатор структурного или совмещающего типов представляет величины, специфицированные в структуре или совмещении;

  • идентификатор, объявленный как указатель, представляет указатель на величину специфицированного типа;

  • идентификатор, объявленный как массив, представляет указатель, чье значение является адресом первого элемента массива. Тип адресуемых указателем величин- это тип элементов массива. Например, если series объявлен как массив целых из 10- ти элементов, то идентификатор series представляет адрес массива, тогда как индексное выражение series[5] ссылается на шестой элемент массива. Индексные выражения рассмотрены в разделе 5.2.5. Адрес массива не изменяется во время выполнения программы, хотя значения отдельных элементов могут изменяться. Значение указателя, представленное идентификатором массива, не является переменной и поэтому идентификатор массива не может появляться в левой части операции присваивания;

  • идентификатор, объявленный как функция, представляет указатель, чье значение является адресом функции. Тип, адресуемый указателем , - это специфицированный тип функционального возврата. Адрес функции не изменяется во время выполнения программы. Меняется только значение возврата. Таким образом, идентификаторы функции не могут появляться в левой части операции присваивания.

      1. Строки

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

Так как строковые литералы- это полноценные указатели, то они могут быть использованы в контексте, допускающем величины типа указателей, подчиняясь при этом тем же самым ограничениям. Строковые литералы имеют все же одно дополнительное ограничение: они не изменяемы и не могут появиться в левой части операции присваивания.

Последним символом строки всегда является символ нуль "0". Символ нуль не видим в строковом выражении, но он добавяется как последний элемент, когда строка запоминается. Таким образом, строка "abc" содержит четыре символа, а не три.