Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Brian_Kernighan_Dennis_Ritchie-The_C_Programming_Language-RU.pdf
Скачиваний:
39
Добавлен:
17.03.2018
Размер:
2.45 Mб
Скачать

При сравнении типов указателей квалификаторы типов (А8.2) объектов, на которые указатели ссылаются, во внимание не принимаются, но тип результата наследует квалификаторы обеих ветвей условного выражения.

А 7.17. Выражения присваивания

Существует несколько операторов присваивания; они выполняются справа налево.

выражение-присваивания: условное-выражение

унарное-выражение оператор-присваивания выражение-присваивания

оператор-присваивания: один из

 

 

/=

%=

+=

-=

<<= >>= &=

^=

|=

Операторы присваивания в качестве левого операнда требуют lvalue, причем модифицируемого; это значит, что оно не может быть массивом, или иметь незавершенный тип, или быть функцией. Тип левого операнда, кроме того, не может иметь квалификатора const; и, если он является структурой или объединением, в них не должно быть элементов или подэлементов (для вложенных структур или объединений) с квалификаторами const.

Тип выражения присваивания соответствует типу его левого операнда, а значение равно значению его левого операнда после завершения присваивания.

В простом присваивании с оператором = значение выражения замещает объект, к которому обращается lvalue. При этом должно выполняться одно из следующих условий: оба операнда имеют арифметический тип (если типы операндов разные, правый операнд приводится к типу левого операнда); оба операнда есть структуры или объединения одного и того же типа; один операнд есть указатель, а другой — указатель на void; левый операнд — указатель, а правый — константное выражение со значением 0; оба операнда — указатели на функции или объекты, имеющие одинаковый тип (за исключением возможного отсутствия const или volatile у правого операнда).

Выражение Е1 ор = Е2 эквивалентно выражению Е1 = Е1 ор(Е2) с одним исключением: Е1 вычисляется только один раз.

А 7.18. Оператор запятая

выражение: выражение-присваивания

выражение , выражение-присваивания

Два выражения, разделенные запятой, вычисляются слева направо, и значение левого выражения отбрасывается. Тип и значение результата совпадают с типом и значением правого операнда. Вычисление всех побочных эффектов левого операнда завершается перед началом вычисления правого операнда. В контексте, в котором запятая имеет специальное значение, например в списках аргументов функций (А7.3.2) или в списках инициализаторов (А8.7) (здесь в качестве синтаксических единиц фигурируют выражения присваивания), оператор запятая может появиться только в группирующих скобках. Например, в

f(a, (t=3, t+2), с)

три аргумента, из которых второй имеет значение 5.

А 7.19. Константные выражения

Синтаксически, константное выражение — это выражение с ограниченным подмножеством операторов:

константное-выражение: условное-выражение

Соседние файлы в предмете Программирование