Переменные С++ не меняются

У меня есть класс Timer, но всякий раз, когда я пытаюсь изменить значение любой переменной, переменная просто остается равной нулю. SDL_GetTicks() возвращает предполагаемое значение, но когда я пытаюсь присвоить это значение переменной, эта переменная остается равной нулю. Я пробовал жестко кодировать числа, и переменная по-прежнему остается равной нулю. Переменные в моем классе Main работают просто отлично, но когда я пытаюсь изменить любую из них в этом, это не работает. Кроме того, метод timeSinceCreation() также возвращает ноль.

#include "Timer.h"
#include "SDL.h"

Timer::Timer() : m_timeOfLastCall(0.0f)
{
SDL_Init(SDL_INIT_TIMER);
}

Timer::~Timer() {}

float Timer::timeSinceCreation()
{
 return SDL_GetTicks();
 }

float Timer::timeSinceLastFrame()
{
 float thisTime = timeSinceCreation();
 float deltaTime = thisTime - m_timeOfLastCall;
m_timeOfLastCall = thisTime;
printf("%u ms \n", thisTime );
return deltaTime;
}

person user2117614    schedule 27.02.2013    source источник
comment
Может быть, ваш вывод неверен? Попробуйте: printf("%.8e ms\n"); или посмотрите документацию для строк формата stdio.   -  person Brett Hale    schedule 28.02.2013
comment
Ваше утверждение кажется мне запутанным. Вы говорите, что SDL_GetTicks() возвращает правильное значение, а timeSinceCreation() возвращает ноль.   -  person Mahesh    schedule 28.02.2013


Ответы (1)


Ваш код имеет неопределенное поведение, потому что ваш вызов printf имеет несоответствующий тип (%u требует unsigned int, но вы передаете float). В результате, вы не должны ожидать какого-либо разумного поведения.

person Mankarse    schedule 28.02.2013
comment
Ага! Спасибо, я изменил его на %f, и теперь он отлично работает! Спасибо! - person user2117614; 28.02.2013
comment
@user2117614: На самом деле, на вашем месте я бы изменил типы всех переменных на Uint32, тип значений, возвращаемых SDL_GetTicks. - person Mankarse; 28.02.2013