Da wird eine Zeit als int deklariert sein oder eine Zwischenrechnung wird nur in int gemacht (was Standard ist wenn man nichts dagegen unternimmt). Ein int geht maximal bis 2 ^ 15 - 1 = 32767
Nimm unsigned long und führe Zwischenrechnungen wenn nötig in unsigned long durch, dann hast du diese Probleme nicht
bastler3:
Kennt jemand von euch dieses Verhalten? Ist es irgendwie behebbar? Oder kann ich mir diese Nanos besser als Schmuck um den Hals hängen?
Ein 16-bit "int" läuft beim Stand von +32767 in den negativen Bereich über. Also nach +32767 kommt −32.768.
Hast Du schon mal was von negativen Zahlen gehört, die mit einem vorzeichenbehafteten "int" darstellbar sind, oder Dir schon mal über den darstellbaren Wertebereich Gedanken gemacht?
Auch wenn ganze Zahlen in der Mathematik grundsätzlich keine obere Grenze haben, so gibt es in der Digitaltechnik doch eine Grenze, welche Zahl sich mit 8, 16, 32 oder 64 Bit darstellen läßt, und wo der Wertebereich dann überläuft. Bei vorzeichenlosen 'unsigned' Werten mit Überlauf auf Null, und bei vorzeichenbehafteten 'signed' Werten in den negativen Bereich.