Я часто нахожу стандарты C и С++ трудными для чтения и понимания, даже простые английские предложения и их формулировки дают ужасный опыт. Наверху, грамматика языка полностью ад. Я уверен, что у многих одинаковое чувство, по крайней мере, мои друзья.
Я хотел бы это понять на некоторых примерах. Начнем с этого (который пытается объяснить, почему the conditional expression in C++
отличается от the conditional expression in C
: (цитируется из wikipedia)
Связывание операторов в C и С++ (в соответствующем Стандарты) на факторизованном языке грамматики, а не приоритета Таблица. Это создает некоторые тонкие конфликты. Например, в C, синтаксис условного выражения является:
логическое-OR-выражение? выражение: условное выражение
а в С++ -
логическое-OR-выражение? выражение: Назначение выражение
Следовательно, выражение:
e = a < d? a ++: a = d
анализируется по-разному в двух языки. В C это выражение является синтаксическая ошибка, но многие компиляторы разбора это как:
e = ((a < d? a ++: a) = d)
что является семантической ошибкой, поскольку результат условного выражения (который может быть ++) не является значением lvalue. В С++ он анализируется как:
e = (a < d? a ++: (a = d))
который является допустимым выражением.
Пожалуйста, объясните жирный текст в приведенной выше цитате! Пожалуйста, объясните грамматику несколькими примерами (особенно теми, где C и С++ отличаются).
EDIT: Я просто хочу знать , как читать и понимать их. Я имею в виду, если бы я объяснил это на разговорном английском, то как бы я это сделал?