根据this table,功能应用程序关联到左侧。那是什么意思?当二元运算符多次出现时,相关性很重要,如a - b - c
。这与功能应用有什么关系?如果函数应用程序与右侧相关联,它将如何不同?
答案 0 :(得分:6)
像X(y)(z)
这样的东西?可以是(X(y))(z)
还是X((y)(z))
? (X
,X
和y
的返回值可以调用。
答案 1 :(得分:1)
您误解了该表,函数应用程序关联到左侧,而不是右侧。
在处理返回其他功能的函数时会发挥作用。
以下是一个重要的例子:
#include <iostream>
template<typename T>
T id_1(T t) {
t(1);
return t;
}
typedef void (*func)(int);
void nothing(int x) {}
func print(int x) {
std::cout << x << std::endl;
return nothing;
}
int main() {
std::cout << "left associative:\n";
id_1(print)(2);
std::cout << "right associative:\n";
id_1((print)(2));
}
输出
left associative:
1
2
right associative:
2
答案 2 :(得分:0)
函数调用是左关联的。另一种说法是,后缀运算符的优先级高于一元运算符。