首页  >  文章  >  后端开发  >  谁定义了 C 中的运算符优先级和结合性?

谁定义了 C 中的运算符优先级和结合性?

Patricia Arquette
Patricia Arquette原创
2024-11-01 14:18:29273浏览

Who Defines Operator Precedence and Associativity in C  ?

运算符优先级和结合性:控制因素

在编程领域,理解控制运算符优先级和结合性的规则至关重要。虽然许多编程教科书提供了展示运算符优先级和结合性的图表,但根本问题仍然存在:谁定义了这些规则?

定义标准

与普遍看法相反,ANSI C11 标准没有明确定义运算符优先级和结合性。相反,这些概念嵌入到语言本身的语法中。例如,C 语言中加法 ( ) 和减法 (-) 的语法产生规则表明,乘法表达式是加法表达式的子规则。这确定了这些运算符之间的优先级。

关联性和求值顺序

关联性决定如何对同一运算符的多次使用进行分组。例如,加法运算符是从左到右关联的,这意味着像“x y z”这样的表达式将被分组为“(x y) z”。

区分关联性和计算顺序非常重要。虽然这些概念相关,但它们是不同的。关联性决定分组,而求值顺序与表达式求值的顺序有关。

函数调用中的求值顺序

返回函数调用运算符的示例,从左到右关联性意味着“f()()()”将被分组为“(f())()”。此分组规则不会影响函数求值的顺序,函数求值仍然是无序的。但是,必须在应用运算符之前对操作数进行求值。

序列点和之前排序

历史上,序列点用于定义 C 和 C 中的求值顺序。然而,该术语后来改为“之前测序”。这个概念意味着一个表达式的求值必须先于另一个表达式的求值。

总之,虽然运算符优先级和结合性表在编程教科书中很常见,但这些规则最终源自语言的语法。了解语法使程序员能够准确地解释表达式并确定其求值顺序。

以上是谁定义了 C 中的运算符优先级和结合性?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn