首页 >后端开发 >C++ >C 和 C 中的参数评估顺序是什么?

C 和 C 中的参数评估顺序是什么?

Patricia Arquette
Patricia Arquette原创
2024-12-19 05:12:00347浏览

What is the Parameter Evaluation Order in C and C  ?

C 和 C 中的参数求值顺序

C 和 C 中函数参数的求值顺序是开发人员需要考虑的重要因素。 C99和C11标准都规定,评估顺序没有明确定义。这意味着编译器可以自由确定求值顺序。

但是,请务必注意,参数表达式求值的所有副作用必须在 C 中调用函数之前生效。换句话说,对变量或其他状态的任何修改都必须发生在函数体执行之前。

C 标准还规定后缀表达式和参数表达式列表的求值顺序是未指定的。这意味着编译器可以确定这些表达式的求值顺序。

相反,C11 标准指定在函数指示符和实际参数的求值之后但在实际调用之前有一个序列点。这意味着实际参数的计算与被调用函数体的执行是分开的。

关于函数调用的实现,C 和 C 标准都没有规定必须使用硬件堆栈。这是留给编译器编写者的实现细节。虽然许多架构确实通过硬件堆栈传递参数,但这并不普遍正确。

以上是C 和 C 中的参数评估顺序是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn