Новосибирский Государственный Университет
Опубликован: 26.08.2005 | Доступ: свободный | Студентов: 19047 / 3448 | Оценка: 4.07 / 3.55 | Длительность: 13:11:00
ISBN: 978-5-9556-0057-4
Лекция 3:

Операции

Перечень операций языка Си

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

Операции, уровень приоритета которых равен 1

Операции вызова функции, индексирования и выбора. В качестве операций языка Си рассматриваются также скобки в вызове функции, квадратные скобки для индексирования массивов, точка и стрелка вправо для выбора компонентов структуры или объединения. Уровень этих операторов равен 1, все операции выполняются слева направо.

Операция вызова функции: ( )

Пример 1:

fe(e1, e2,...,en);

Вызов функции fe с аргументами e1, e2, ..., en. Значением этого выражения является значение, которое возвращает функция.

Пример 2:

x = sqrt (y);
Операция индексирования массива: []

Синтаксис:

array [2]

Значением выражения является третий элемент массива.

Присвоение значения 26 одиннадцатому элементу массива записывается таким образом:

array[10]=26;

Первый элемент массива описывается выражением array[0] (более подробно о массивах описано в лекции 12).

Операция выбора компонентов структуры или объединения: .

Синтаксис:

struct.element

Значением этого выражения является элемент element структуры struct или объединения (см. лекцию 14). Оператор:

struct.element=1963;

присваивает значение 1963 этому элементу.

Операция выбора компонентов структуры с указателем: ->

Синтаксис:

my_birthday->day,

my_birthday - указатель на структуру. Оператор:

my_birthday->day=26;

присваивает значение 26 структурной переменной day, на которую указывает my_birthday.

Операции, уровень приоритета которых равен 2

Унарные операции. Для унарных операций требуется только один операнд ; эти операции либо префиксные, либо постфиксные. Операция sizeof имеет два варианта: префиксная операция и унарная операция.

Операция косвенной ссылки: *

Это указатель на любой тип T, кроме void. Тип результата T.

Использование:

*pe

Значением выражения является переменная, адресуемая указателем pe.

Пример 1:

*ptr=c;

Пример 2:

*fpe;

Значением выражения является функция, адресуемая указателем fpe.

Пример 3:

fpe=*funcname;
(*fpe)(arg1, arg2);
Операция получения адреса: &

У этой операции тип операнда есть переменная любого типа, кроме void. Тип результата - указатель на Т.

Использование:

&v

Значением выражения является адрес переменной v.

Пример:

myptr=&n;
Операция отрицания: -

Тип операнда - арифметический. Тип результата: unsigned, long, double, int.

Иван Руднев
Иван Руднев
Фраза "Структурная переменная описывается с помощью переменной структурного типа" на мой Взгляд является тафтология. Из нее сложно понять суть утверждения. Хотелось бы полке понятного описания.
Руслан Поддубный
Руслан Поддубный

"

printf("Добро пожаловать!\n");  - на консоль выводится непонятный набор знаков вместо русского текста.