Also die Version von Klebwax gibt bei
lcd_cpos = c % LCD_LL;
lcd_line = c / LCD_LL;
und c=0 als Ergebnis für lcd_cpos UND lcd_line je = 255 bzw. vermutlich eher -1 aus obwohl alles uint8_t ist bzw. auf solches gecastet wurde.
So hab ich das aber auch mal gelernt...
In wie weit das mit int bzw. längeren vorzeichenbehafeten Zahlen anders wird, muss ich mir noch mal genauer ansehen.
Übrigends lässt sich der Code von mir recht gut ohne Augenkrebs lesen wenn man sich den in ein Editor mit Syntax highligtning packt, Klebwax. Und zum Angucken war die Kurze Version aus Post 1 gedacht.
Aber zu dem Progrämmchen...
LCD_LL ist bei mir 15 und das was du auf 20 gesetzt hattest.
Die Ausgabe dazu lautet:
Man beachte, das die erste Ziffer die koordinate -1,-1 hat, und die ganze erste Line die line-1 ist. Also so dolle getestet, wie du sagst, war das auch nichtCode:[READY] 0, 255, 255 1, 0, 255 2, 1, 255 3, 2, 255 4, 3, 255 5, 4, 255 6, 5, 255 7, 6, 255 8, 7, 255 9, 8, 255 10, 9, 255 11, 10, 255 12, 11, 255 13, 12, 255 14, 13, 255 15, 14, 255 16, 255, 0 17, 0, 0 18, 1, 0 19, 2, 0 20, 3, 0 21, 4, 0 22, 5, 0 23, 6, 0 24, 7, 0 25, 8, 0 26, 9, 0 27, 10, 0 28, 11, 0 29, 12, 0 30, 13, 0 31, 14, 0 32, 255, 1 33, 0, 1 34, 1, 1 35, 2, 1 ---3<--- 78, 13, 3 79, 14, 3
Der Weg funktioniert zwar... auch wenn da noch nicht alles auf 0 ausgeht... aber das kann man ja ggf. anpassen. Ich wollte aber explizit die Division und den Modulo Operator vermeiden wie ich auch schrieb! Allerdings kann so auch kein Div0 Fehler auftauchen wie ich befürchtete. In so fern.. deine Lösung funktioniert.
Zudem erklärt das aber nicht, warum der Compiler 0 - (0 x 15) zu 1 und nicht wie richtig, zu 0 bringt.. und zwar unabhängig von der Optimierungsstufe.
Ich denke auch nicht, das generell dem Compiler zu misstrauen ist, ich kann mir aber sehr gut vorstellen, das genau so ein Term in den regression Tests nicht getestet wird weil er eigentlich Unsinning ist. Es wäre zumindest nicht der erste Bug im gcc.
Kann ja sein das ich noch irgend ein mitwirkenden Fehler drin habe.. will ich ja garnicht ausschließen... mir wär nur halt lieber, ich hätte eine schlüssige Erklärung für das (für mich) komische Ergebnis 1.
Lesezeichen