c++ - C中函数执行的优先顺序

标签 c++ c operator-precedence

下面语句的执行顺序是什么:

x = f(2) * g(5) + h();

我看过this链接,优先顺序应为 f、g 和 h。 我说的对不对,求解释

最佳答案

在这种情况下,您无法保证函数的执行顺序。

虽然优先规则意味着 f(2) 将乘以 g(5),然后再将 h() 添加到结果中,这些子表达式的执行顺序是实现定义的。

如果您使用有副作用的函数来执行此操作,请不要这样做。根据代码的不同,您可能会或可能不会看到不同编译器的结果。

注意:正如@Jakub Zaverka 提到的,当您处理逻辑运算符 &&|| 时,规则略有不同,因为短路等功能。

关于c++ - C中函数执行的优先顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21207904/

相关文章:

c++ - 为什么 STL 的 next_permutation 实现不使用二分查找?

c++ - 来自模板特化的模板

php - "&&"和 "and": Operator precedence and short circuiting 之间的区别

c++ - C++ 中的线程安全函数指针

c++ - 无法取消引用插入到 vector 中的类对象指针

c - Fscanf 没有将文件中的 float 正确读取到链表中

c - 为什么在 howstuffworks.com 上发布的这段代码不起作用?

c++ - 在 Rcpp 中使用其他包中的 C 函数

c - 带括号和不带括号的运算符地址

c - 在不使用 C 中的第三个变量的情况下交换两个变量的值?