Ula*_*gin 4 c recursion operator-precedence operands c-standard-library
当我从 deitel c 学习 C 中的递归函数时,我读到了这句话:
标准 C 没有指定大多数运算符(包括 +)的操作数的计算顺序。
但书中也说:
'+' 从左到右的结合性
操作数的计算顺序:
谁能解释一下这是为什么?
求值顺序和关联性是两个不同的东西,举个例子:
int x = func1() - func2() - func3(); //having int return types
Run Code Online (Sandbox Code Playgroud)
在这个表达式中,你不知道是func1()先求值还是最后求值,这意味着你不知道哪个函数会被调用并首先返回它的值,但是你知道关联性,如 with +,将是 left-to-对,首先func1() - func2()是减法的结果- func3()。
C 中没有从左到右或从右到左求值的概念,不要与运算符的从左到右和从右到左结合性混淆:表达式
f1() + f2() + f3()被解析为(f1() + f2()) + f3()由于左的 -to-right 关联性operator+,但f3()可以首先、最后f1()或f2()在运行时之间或在运行时计算对的函数调用。
https://en.cppreference.com/w/c/language/eval_order
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |