关于重载函数的执行顺序有关问题

关于重载函数的执行顺序问题
正在学习C++,看到函数重载部分有一个示例,代码如下:
#include <iostream>
#include <iomanip>
using namespace std;

double larger(double a, double b);
long& larger(long& a, long& b);


int main()
{
  cout << endl;
  cout << "Larger of 1.5 and 2.5 is " << larger(1.5, 2.5) << endl;
 
  int value1 = 35;
  int value2 = 25;

  cout << "Larger of " << value1 << " and " << value2 << " is " 
       << larger(static_cast<long>(value1), static_cast<long>(value2))
       << endl;

  return 0;
}

// Function to return the larger of two floating point values
double larger(double a, double b)
{
  cout << " double version. ";
  return a>b ? a : b;
}

// Return the larger of two long references
long& larger(long& a, long& b)
{
  cout << " long ref version. ";
  return a>b ? a : b;
}
输出结果如下:
double larger() called.
The larger of double values 1.5 and 2.5.
double larger() called.
The larger of int values 35 and 25 is 35
这个例子2次都调用double版本函数的原因我知道,但对语句的输出顺序有点疑问:函数从main()开始执行,应该先输出The larger of double values 1.5 and 2.5.才调用重载函数输出double larger() called呀,怎么先输出的是double larger() called.这句呢?求高手解答!

------解决方案--------------------
这是未定义行为

输出 "Larger of 1.5 and 2.5 is " 和larger函数调用顺序是不确定的
------解决方案--------------------
下个断点看看吧!
------解决方案--------------------
根据你传入数据的类型去调用对应参数类型的函数,跟执行顺序无关。
------解决方案--------------------
引用:
未定义行为?是不同的编译器顺序不一样吗?

不确定就是不知道,就算是同一个编译器,这次编译是这个顺序,下次编译是另外一个顺序。都是有可能的