Le code suivant ne donne pas la réponse que je pense quand je multiplierai un * flotteur 12.Float par rapport à des problèmes de calcul de type de données Integer en C
void setup_timer_parameters(float micro_seconds)
{
//constants
calibration = 0;
//calculables
periods_needed = micro_seconds * 12 + calibration;
target_overflows = periods_needed/65536;
overflows_counter = target_overflows;
temp = periods_needed - (target_overflows * 65536);
leftover = (long)temp;
//int overflows_needed = micro_seconds % timer_period;
printf(lcd_putc, "\fPN%05f TMP%05f\nTO%05f LO%05f", periods_needed, temp, target_overflows, leftover);
}
void main(){
setup_timer_parameters(20000F);
}
Pour une raison quelconque mon écran me montre que periods_needed est -518! Pourquoi n'est-ce pas 20000 * 12 = 240000?
Sans définition pour les types 'period_needed', ou' calibration', nous n'avons aucune idée. Mon pari est que 'periods_needed' est une sorte de short, mais vous n'avez pas fourni tout le code. –
Quels sont les types de périodes nécessaires, temp, target_overflows, leftover? Code s'il vous plaît. – vladr
À quoi est due la déclaration de periods_needed? Est-ce un nombre entier? Est-ce un flotteur? –