Вот тестовая программа:
void testFunc()
{
double maxValue = DBL_MAX;
double slope = std::numeric_limits<double>::quiet_NaN();
std::cout << "slope is " << slope << std::endl;
std::cout << "maxThreshold is " << maxValue << std::endl;
std::cout << "the_min is " << std::min( slope, maxValue) << std::endl;
std::cout << "the_min is " << std::min( DBL_MAX, std::numeric_limits<double>::quiet_NaN()) << std::endl;
}
int main( int argc, char* argv[] )
{
testFunc();
return 0;
}
В Debug я получаю:
slope is nan
maxThreshold is 1.79769e+308
the_min is nan
the_min is 1.79769e+308
В выпуске я получаю:
slope is nan
maxThreshold is 1.79769e+308
the_min is 1.79769e+308
the_min is nan
Почему я должен получить другой результат в Release, чем Debug?
Я уже проверил Qaru post Использование функций min и max в С++, и он не упоминает различия Release/Debug.
Я использую Visual Studio 2015.