列出 C 语言中所有运算符的正确运算符优先级表是什么样的?
我在网上进行了广泛的搜索,发现了许多这样的优先级表。唉,我还没有找到一个满足这些要求的人:
- 列出ISO 9899:2011 中定义的 C 语言中的所有运算符,不混入任何 C++ 运算符。
- 按完整且正确的优先级顺序列出运算符。
列出 C 语言中所有运算符的正确运算符优先级表是什么样的?
我在网上进行了广泛的搜索,发现了许多这样的优先级表。唉,我还没有找到一个满足这些要求的人:
解释
前。表示运算符优先级,其中第 1 组的优先级最高,第 17 组的优先级最低。
副教授。表示运算符关联性,如果适用。关联性可以是从左到右或从右到左。
来源
我在这篇文章中的目标是在 Stack Overflow 现场提供一个正确且规范的运算符优先级表。此运算符优先级表直接对应于 ISO 9899:2011 的第 6.5 章,我们可以在其中阅读 (6.5/3):
运算符和操作数的分组由语法指示。85)
然后作为评论,在信息性(非规范性)脚注中:
85) 语法规定了表达式求值中运算符的优先级,与本小节主要小节的顺序相同,最高优先级在前。/--/
在每个主要子条款中,运算符具有相同的优先级。左或右结合性在每个子条款中由其中讨论的表达式的语法指示。
表中的所有正式操作员名称均取自第 6.5 章,在规范文本中可以找到这样的名称。在程序员社区可能比标准中给出的名称更熟悉另一个名称的情况下,包括非正式名称。
这里:
http://basen.oru.se/c/operators.html
(我将_Alignof,我认为是 C11 中唯一的新运算符添加到我自己的表中,并在那里发布。也许这是作弊?欢迎对如何改进表提出意见和建议。)
这个网站有一个非常棒的优先级表:
http://www.difranco.net/compsci/C_Operator_Precedence_Table.htm