Грамматика языка - это только одна часть определения языка.Существуют дополнительные семантические правила и ограничения , которые указывают, что только синтаксис не может.Например, один только синтаксис не может указывать, что переменные и функции должны быть объявлены перед использованием, или что операнд унарного оператора *
должен иметь тип указателя и т. Д.
Существует ограничение на выражения присваивания, которыецелью назначения должно быть модифицируемое значение l 100 * *, которое является выражением, которое задает область памяти, так что содержимое этой области может быть прочитано или обновлено.Если v
является именем переменной, то она также служит lvalue.
Однако семантические правила оператора ++
гласят, что результатом ++v
является , а не lvalue, и как таковая не может быть целью назначения.
Глава и стих по всем этим вопросам см. В C 2011 г. онлайн-проекте , разделы 6.3.2.1 (L-значения, массивы и обозначения функций), 6.5.3 (унарные операторы)и 6.5.16 (операторы присваивания).