C 中函数执行的优先顺序
Precedence order of function execution in C
以下语句的执行顺序是什么:
x = f(2) * g(5) + h();
我看过这个链接,优先顺序应该是f,g和h。我是否正确,请解释
在这种情况下,您无法对函数的执行顺序做出任何保证。
虽然优先级规则意味着在将h()
添加到结果之前,f(2)
将乘以 g(5)
,但这些子表达式的执行顺序是实现定义的。
如果您使用有副作用的函数执行此操作,请不要这样做。根据代码的不同,您可能会也可能不会看到不同的编译器不同的结果。
注意:正如Zaverka@Jakub提到的,当你处理逻辑运算符时,由于短路等功能,&&
或||
的规则略有不同。
带 x = f(2) * g(5) + h();
f(2)
,g(5)
和h()
以任何顺序执行 - 如果处理器支持的话,甚至可以同时执行。
f()
和g()
的结果成倍增加。 然后将该产品添加到h()
的结果中。
相关文章:
- QML按钮点击功能执行顺序
- C++从其他 constexpr 创建 lambda 不能按顺序执行 Constexpr
- 如何创建线程序列以按照启动顺序执行任务?
- 为什么切换 for 循环的顺序会显著改变执行时间?
- C++ - scanf() 和 printf() 执行顺序不对
- 递归函数的执行顺序
- pthread执行时间比顺序执行时间差
- 编译器是否会简化按顺序执行多次的操作
- 异步执行比顺序执行需要更长的时间
- 为什么要以相反的顺序执行RUST功能和FFI C 功能
- 是否有一种可接受的运行线程或按顺序执行的方法
- C++ 为什么 std::async 比顺序执行慢
- 如何在睡眠期间按顺序执行我的动作?(C++,威纳皮)
- 函数未按提供的顺序执行
- SIGSEGV:程序不按顺序执行
- 为什么 g++ 使我的代码以与编写不同的顺序执行,我如何禁用此"optimization"?
- 生成保证顺序执行
- 如何用c++ boost::asio顺序执行异步操作
- 以未知的顺序执行函数的最有效方法
- 并行执行比顺序执行快的示例