C++.Бархатный путь

       

Унарное выражение


УнарноеВыражение ::= ПостфиксноеВыражение

::= ++ УнарноеВыражение

::= -- УнарноеВыражение

::= УнарнаяОперация ВыражениеПриведения

::= sizeof УнарноеВыражение

::= sizeof (ИмяТипа) ::= ВыражениеРазмещения

::= ВыражениеОсвобождения

УнарнаяОперация ::= * | | + | - | ! | ~

Унарные выражения группируются справа налево.

Вторая и третья БНФ являются основой для построения префиксных выражений увеличения и уменьшения (инкремента и декремента). Символ операции в выражении инкремента и декремента вовсе не означает, что в ходе вычисления значения выражения к операндам будут применяться операции уменьшения и увеличения. В сочетании с операндами производных типов определение значений этих выражений сопровождается вызовами специальных (операторных) функций.

В выражениях, представленных четвёртой БНФ, унарная операция * является операцией разыменования. Типом выражения приведения является указатель на объект типа X, а это указывает на то, что описываемое значение является l-выражением. Значением выражения является значение размещённого в памяти объекта. Если типом операнда является тип указатель на объект типа X, то типом выражения является непосредственно тип X.

Результатом операции является адрес объекта, представленного операндом. При этом операнд операции может оказаться либо l-выражением, либо квалифицированным именем. Но об этом позже.

Далее приводится множество БНФ, определяющих синтаксис выражений размещения и освобождения. У этих выражений достаточно сложная семантика. Детально разобрать их в данный момент мы пока просто не сможем. На этом этапе придётся ограничиться лишь самыми необходимыми сведениями.



Содержание раздела