功能应用程序关联到左侧

时间:2012-11-12 10:39:41

标签: c++ function syntax operators associativity

根据this table,功能应用程序关联到左侧。那是什么意思?当二元运算符多次出现时,相关性很重要,如a - b - c。这与功能应用有什么关系?如果函数应用程序与右侧相关联,它将如何不同?

3 个答案:

答案 0 :(得分:6)

X(y)(z)这样的东西?可以是(X(y))(z)还是X((y)(z))? (XXy的返回值可以调用。

答案 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)

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