Почему печать переменной меняет ее значение?

У меня есть небольшая функция, которая должна делать прогноз на основе алгоритма машинного обучения. Функция не работала, поэтому я ввел оператор печати, чтобы проверить значение, и внезапно он начал работать. Когда я закомментирую строку печати, она снова перестает работать. Я что-то упускаю из-за того, почему это могло произойти?

int makePrediction( const InstanceT & instance, bool biased ){
  double dotProduct = ( biased ? instance * _weights + _bias : instance * _weights ); 
  std::cout << "dotProduct = " << dotProduct << std::endl;
  return ( dotProduct > 0 ? 1 : -1 );
}

по какой-то причине дает другой результат, чем

int makePrediction( const InstanceT & instance, bool biased ){
  double dotProduct = ( biased ? instance * _weights + _bias : instance * _weights ); 
  return ( dotProduct > 0 ? 1 : -1 );
}

, и чтобы показать, что результаты разные при одинаковых входных данных, я вызываю эту функцию с помощью:

std::vector<InstanceT> _instances = populate_data() //this works for both versions
for ( int i = 0; i < _instances.size(); i++ ){
  std::cout << "prediction: " << makePrediction( _instances[i], true ) << std::endl;
}

Any мысли?

5
задан Max 26 September 2011 в 09:00
поделиться