C编程语言的运算符优先级表

列出C语言中所有运算符的正确运算符优先级表是什么样的?

我在网上进行了大量搜索,发现了许多这样的优先级表。 唉,我还没有找到一个满足这些要求的人:

  • 列出ISO 9899:2011中定义的C语言中的所有运算符,而不混合任何C ++运算符。
  • 完整且正确的优先级顺序列出操作员。

在此处输入图像描述


说明

PREC。 表示运算符优先级 ,其中组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