Насколько мне известно, в настоящее время нет хорошей таблицы приоритетов операторов для D. Вы можете посмотреть страницу с выражениями (http://www.digitalmars.com/d/1.0/expression.html) и разбить любое имеющееся у вас выражение в соответствии с грамматикой и изобразить еговне, но, очевидно, это не так красиво и просто, как в таблице.
Однако код на C и C ++ гарантированно будет корректным D-кодом с идентичным поведением, иначе он не скомпилируется.Таким образом, до тех пор, пока у вас будет действительное выражение C или C ++, вы можете просто использовать таблицу приоритетов операторов C / C ++: http://www.cppreference.com/wiki/operator_precedence
Так что, к сожалению, пока нетТаблица приоритетов операторов для D, если вы понимаете приоритет операторов C / C ++, действительно не должно быть никаких сюрпризов.
Редактировать: Что касается операторов, специфичных для D, рассмотримСтраница выражений, у вас есть
Тот же приоритет, что и у других операторов присваивания
Вероятно, тот же приоритет, что и ==
Тот же приоритет, что и <</p>
- ! <> =
- ! <>
- <>
- <> =
- !>
- !> =
- ! <</li>
- ! <= </li>
Тот же приоритет, что и>>
Возможно, такой же приоритет аs *
Я считаю, что это полный список новых D-операторов.Я говорю «вероятно» в паре этих случаев, потому что похоже, что это определяется реализацией, как указано в ответе Марка Рушакова (в этом случае приоритет очень близок к данному оператору, если не идентичен).Тем не менее, я не уверен, что на самом деле это будет иметь значение, поскольку может быть довольно сложно смешать некоторые из них таким образом, который был бы совершенно неоднозначным (особенно - и в ).
Вообще говоря, если вы придерживаетесь правил приоритета C / C ++, все должно быть в порядке.Во всяком случае, D будет несколько более строгим, чем C / C ++, из-за более строгих правил преобразования и тому подобного, поэтому я не думаю, что у вас возникнут какие-то дополнительные двусмысленности.Тем не менее, было бы неплохо предложить добавить в документацию D явную таблицу приоритетов операторов.