【发布时间】:2021-12-14 10:11:09
【问题描述】:
我在 C++ STL max 函数中有两个函数调用。首先调用哪个函数?第一个还是第二个?
max(rec(a,a[lev+1],lev+1,n,ar),rec(a,(a[lev]+a[lev+2])/2,lev+1,n,ar));
【问题讨论】:
-
这是定义的实现,IIRC。
-
你能详细说明你的答案吗?
-
实现定义是什么意思。
-
“实现”是编译器,它可以在评估函数参数时做任何事情。它甚至可能没有特定的固定和设置顺序,对于某些调用,它可以按一种顺序执行,而对于另一些调用,则可以完全不同的顺序。
-
@Someprogrammerdude:“实现定义”确实意味着它必须在文档中,因此记录不同的顺序会相当棘手。但从 C++17 开始,它实际上是不确定排序的。它不需要记录在案。