Zitat:
Auf welche Zeile sich deine Warnungen beziehen, hättest du noch angeben können.
Dachte das wäre verständlich. Bezieht sich auf die Zeile:
return zeitstring;
Zitat:
Wozu floor()? Du rechnest mit ints, da macht floor() keinen Sinn und da wird eine der Warnings herkommen.
Stimmt:) Ich wusste nicht, ob die rechnung stimmt und habe es erst in php Programmiert. Und da braucht man es eben.
Und ne kein Warning von hier :)
Zitat:
Und wozu die uint16 und uint8, nimm einfach ints. Dann gibts auch keine Warnings bei sprintf(), das erwartet ints.
Na ganz einfach. Warum sollte ich unnötig irgendeinen Platz im Speicher reservieren.
uint8_t geht von 0 - 255 bei der rechnung reicht das.
Außer bei den Tagen, da kann uint16_t von 0 - 65535 was 179 Jahren entspricht. Was reichen sollte.
Und nein sprintf gibt da keine Warnings.
Zitat:
Und zur Ausgabe. Probiert mal statt der vielen ifs "%02d:%02d" als Formatstring.
Danke !
Zitat:
Ob deine Rechnung richtig ist, habe ich nicht geprüft. (tag * 86400) und (stunde * 3600) sehen problematisch aus. Da kann ein Integer overflow auftreten.
-----
Irgenwie sieht mir das nach Unix-Time aus.
Denke nicht dass es ein overflow gibt.
Durch die Rechnung kann Stunde nie höher als 24 sein, Minute < 60 Sekunde < 60
Und bei den Tagen wäre es erst bei 65535 ein Problem, was 179 Jahre entspricht. Es sollte reichen:)
Nicht direkt Unix. Timestamp 0 wird der Tag sein, an dem die Platine fertig war ;)
_______________________________
Zitat:
0.) #include <math.h>
Jap :) Aber nicht mehr benötigt, weil floor ja weg fällt.
Zitat:
1.) char * zeit(volatile unsigned long int zs) {......}
Danke! Das hat mein Problem gelößt
Zitat:
2.) in der Funktion definierst du die Variable char zeitspring[5] als static (normale Variable wird nach Verlassen der Fkt "zerstört", static nicht)
Stimmt. Spart sicher nochmal etwas zeit.
_____
Danke. Jetzt geht alles.