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

📅  最后修改于: 2021-05-26 01:30:44             🧑  作者: Mango

它依赖于C语言的编译器。依靠副作用的评估顺序永远都不安全。例如,如下所示的函数调用在一个编译器与另一个编译器之间的行为可能会非常不同:

void func (int, int);
    
int i = 2;
func (i++, i++);

(不保证使用C或C++标准语言定义)增量将以任何特定顺序进行求值。两种增量都可能首先发生。 func可能会得到参数’2,3’,或者可能会得到’3,2’,甚至是’2,2’。

来源:http://gcc.gnu.org/onlinedocs/gcc/Non_002dbugs.html

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。