我正在学习C运算符的结合性。
在此过程中,我了解到函数调用运算符()
是从左到右结合的。但是,结合性只有在表达式中出现多个具有相同优先级的运算符时才起作用。然而,我找不到任何涉及函数调用运算符且结合性起着关键作用的例子。
例如,在语句a = f(x) + g(x);
中,结果取决于求值顺序而不是两个函数调用的结合性。类似地,调用f(g(x))
将首先计算函数g()
,然后计算函数f()
。这里我们有一个嵌套的函数调用,再次结合性并不起任何作用。
这个优先级组中的其他C运算符是数组下标[]
、后缀++
和后缀--
。但我找不到任何结合这些运算符与()
的组合的例子,其中结合性在表达式求值中起作用。
因此,我的问题是函数调用的结合性被定义为从左到右是否会影响C中的任何表达式?能否提供一个示例,说明函数调用运算符()
的结合性在表达式求值中起作用?
f
本身就是一个表达式(比如从数组中选择的函数指针),该怎么办? - EOFf()()()()
这样开始编写代码,它是合法的C语言。请参考格热戈日的答案,获取一个可能的示例。 - Filipe Gonçalvesf(a)(b)
是对f
的调用,传递b
,然后使用a
调用结果(也就是说(f(b))(a)
)- 你想吗? - Alec Teal