当我从 deitel c 学习 C 中的递归函数时,我读到了这句话:
标准 C 没有指定大多数运算符(包括 +)的操作数的计算顺序。
但书中还说:
'+' 从左到右的结合性
操作数的求值顺序:
谁能解释这是为什么?
当我从 deitel c 学习 C 中的递归函数时,我读到了这句话:
标准 C 没有指定大多数运算符(包括 +)的操作数的计算顺序。
但书中还说:
'+' 从左到右的结合性
操作数的求值顺序:
谁能解释这是为什么?
评估顺序和关联性是两个不同的东西,举个例子:
int x = func1() - func2() - func3(); //having int return types
在这个表达式中,您不知道func1()
是先评估还是最后评估,这意味着您不知道将调用哪个函数并首先返回其值,但是您知道与 的关联性+
将是左到-对,首先func1() - func2()
是减法的结果- func3()
。
C 中没有从左到右或从右到左求值的概念,不要与运算符的从左到右和从右到左结合性混淆:表达式
f1() + f2() + f3()
被解析为(f1() + f2()) + f3()
由于左的 -to-right 关联性operator+
,但对 的函数调用f3()
可以首先、最后或在运行时或之间f1()
或f2()
在运行时进行评估。