编程中的优先级和关联性
在编程中,运算顺序对于正确计算表达式至关重要。运算符优先级和结合性在确定此顺序中起着至关重要的作用。
谁定义了运算符优先级和结合性?
特定编程语言的标准定义了运算符优先级和结合性。对于 C 和 C ,这些定义可以在各自的语言语法中找到。
运算符优先级是如何定义的?
运算符优先级根据运算符建立运算符分组优先事项。优先级较高的运算符先于优先级较低的运算符进行计算。此层次结构是在语言语法中定义的。
关联性是如何定义的?
关联性确定同一运算符的相邻使用如何分组。例如,如果运算符是从左到右关联的,则该运算符的相邻使用将从左到右关联。此规则也源自语言语法。
与求值顺序的关系
运算符优先级和结合性并不直接控制函数调用的求值顺序。标准只要求运算符的操作数在运算符本身之前进行计算。
从左到右的函数结合性
函数总是从左开始计算的信念向右并不完全准确。虽然某些运算符(例如函数调用运算符)确实具有从左到右的关联性,但这并不决定函数调用的计算顺序。
关联性的影响
考虑示例 f1() f2() * f3()。 * 运算符的优先级高于运算符,因此表达式分组为 f1() (f2() * f3())。但是,求值函数调用的顺序不是由关联性指定的。
其他顺序注意事项
特定运算符可以对操作数求值施加排序限制。例如,在 x || 中y、x 总是在 y 之前计算。这允许短路行为。
历史上下文
以前在 C 和 C 中使用序列点来定义评估顺序。然而,现代标准采用了“之前排序”关系的概念来描述这种行为。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3