Можете ли вы воспроизвести или объяснить эту ошибку Visual C ++ с помощью ctime?

этопример кода будет выводитьtime: 0 независимо от стоимостиN при компиляции с Visual Studio Professional 2013 Update 3 в режиме выпуска, как 32-разрядная, так и 64-разрядная опция:

#include <iostream>
#include <functional>
#include <ctime>

using namespace std;

void bar(int i, int& x, int& y)  {x = i%13; y = i%23;}

int g(int N = 1E9) {   
  int x, y;
  int r = 0;

  for (int i = 1; i <= N; ++i) {
    bar(i, x, y);
    r += x+y;
  }

  return r;
}

int main()
{
    auto t0 = clock();
    auto r  = g();
    auto t1 = clock();

    cout << r << "  time: " << t1-t0 << endl;

    return 0;
}

При тестировании с gcc, clang и другой версией vc ++ на rextester.com, он работает правильно и выводитtime больше нуля. Любые подсказки, что здесь происходит?

Я заметил, чтоg() функция восстанавливает правильное поведение, но изменяет объявление и порядок инициализацииt0, r а такжеt1 не.

Ответы на вопрос(1)

Ваш ответ на вопрос