Вот мой код:
#include<iostream>
const int & Min(const int& a, const int& b);
int main() {
using namespace std;
auto&& val = Min(1,2);
cout << val << endl;
return 0;
}
const int & Min(const int& a, const int& b) {
return a < b ? a : b;
}
Если я скомпилирую это с опцией O0, g++ -O0 main.cpp -o main
, результат будет 1
.Если я скомпилирую с опцией O2, g++ -O2 main.cpp -o main
, это даст результат 0.
Почему это дает разные результаты?