Grundlegende Frage: Wie weit muss ich gehen, um sicherzustellen, dass die Ganzzahlmathematik korrekt ausgeführt wird? Zum Beispiel ist dies wahrscheinlich übertrieben:
unsigned long burnTime = 0UL; unsigned long curBurnTime = 0UL; // Machen Sie einige Dinge, die die obigen Variablen zu verschiedenen Zeiten auf millis () setzen // Später on ... unsigned long adjustedBurnTime = (unsigned long) ((burnTime + curBurnTime) / 1000UL);
Würde die Mathematik korrekt durchgeführt, wenn ich zu einer minimaleren letzten Anweisung gehen würde (seit Alle Elemente der Gleichung sind vorzeichenlose Longs. So:
unsigned long adjustedBurnTime = ((burnTime + curBurnTime) / 1000UL);
Oder sogar:
unsigned long adjustedBurnTime = ((burnTime + curBurnTime) / 1000);