2

根据该表,功能应用程序关联到左侧。这意味着什么?当二元运算符出现多次时,关联性很重要,例如在a - b - c. 这与功能应用程序有什么关系?如果函数应用程序与右侧关联,它会有什么不同?

4

3 回答 3

6

X(y)(z)什么?可能是(X(y))(z)X((y)(z))?(其中、和的X返回值是可调用的)。Xy

于 2012-11-12T10:44:24.010 回答
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
于 2012-11-12T10:54:46.183 回答
0

函数调用是左关联的。换句话说,后缀运算符的优先级高于一元运算符。

于 2012-11-12T10:58:21.603 回答