当我从deitel c学习C语言中的递归函数时,我读到了这句话。
标准C语言没有规定大多数运算符(包括+)的操作数的计算顺序。
但书上也说了。
"+"从左到右的关联性。
操作数的评价顺序。
谁能解释一下为什么会这样?
评价顺序和关联性是两回事,举个例子。
int x = func1() - func2() - func3(); //having int return types
在这个表达式中,你不能知道如果 func1()
将首先或最后被评估,这意味着,你不知道哪个函数将被调用,并首先返回它的值,然而你知道关联性,就像与 +
,将从左到右,先 func1() - func2()
那么减法的结果 - func3()
.
在C语言中没有从左到右或从右到左的评价概念,这与运算符的从左到右和从右到左的关联性不能混为一谈:表达式为
f1() + f2() + f3()
被解析为(f1() + f2()) + f3()
由于从左到右的关联性operator+
但对f3()
可以先评估,也可以最后评估,还可以介于两者之间。f1()
或f2()
在运行时。