мой код имеет что-то вроде этого:переменные двойного сравнения типа всегда возвращает ложь
double TMR_HV ;
....
TMR_HV =2.0; // in another part of my code
void RTKAPI Tempos10(void * p) // task for timers
{
while(1) {
if (TMR_HV > 0.00) TMR_HV -= 0.01;
else TMR_HV = 0.00;
RTKDelay(1);
}
}
Условие if
всегда ложно. Кто-нибудь может мне с этим помочь?
переменной, как показано в размещенном коде, не инициализируется. Это инициализировано где-то еще? Если нет, то его значение может быть любым. –
Возможно, что TMR_HV является NaN или + Inf – john
, переменная является глобальной, и она инициализируется в 0.0, и когда мы помещаем точку прерывания на таймер, начальное значение равно 0.0, и оно запускается. когда переменная получает значение больше 0.0, оно начинает уменьшаться и никогда не останавливаться. он переходит в отрицательные значения. –