LCD - Anzeige Immer Func. "ltoa()" oder erst Var-Groesse vergleichen

Gast #1852624
Lesenswert?

Hi zusammen,
ich erstelle mir gerade eine kleine Lib zur Ansteuerung meines 
LCD-Displays.

Nun hatte ich erst Probleme mit großen Zahlen, hab da aber hier im Forum 
gelesen, dass itoa() nur bis 16 bit geht und man hierfür ltoa() nimmt 
:-)

Jetzt meine Frage:
Soll ich erst prüfen, ob die Zahl in den 16-Bit Bereich reinpasst und 
dann entweder itoa oder ltoa nehmen, oder einfach immer ltoa?

Wenn ich die Breite der Variable prüfe, würde mir gerade nur einfallen
1
if(zahl <= 0xFF)
2
{
3
}else{
4
}

Oder gibts da eine elegantere Lösung, quasi wie viele Register gerade 
von der Variable benutzt werden?

Vielen Dank und ein schönes Wochenende
Marcel
Gast #1852633
Lesenswert?

Ich will quasi eine Funktion machen, die sowohl 8-Bit aber auch bis zu 
32-Bit Werte ausgibt :-)

Mein Prototyp lautet void
1
 LCD_Display_Number(uint32_t number)

Wenn meine Zahl, die ich darstellen will, 8-Bit Breit ist, wird sie ja 
als 32-Bit Zahl in der Funktion gehandelt. Soll ich dann immer noch ltoa 
verwenden, oder immer erst prüfen wie groß die Zahl ist und dann ggf. 
itoa verwenden?

Vielen Dank für die schnelle Rückmeldung :)

Grüße
Marcel
Gast #1852641
Lesenswert?

Marcel schrieb:
> Ich will quasi eine Funktion machen, die sowohl 8-Bit aber auch bis zu
> 32-Bit Werte ausgibt :-)

Naja, in höheren Programmiersprachen wie c++ gibt dafür überladene 
Funktionen, in C benutzt man typischerweise für jeden Typ ne eigene 
Funktion.
(z.B. puts, putc)

> Mein Prototyp lautet void LCD_Display_Number(uint32_t number)
> Wenn meine Zahl, die ich darstellen will, 8-Bit Breit ist, wird sie ja
> als 32-Bit Zahl in der Funktion gehandelt.

Platzverschwendung, aber wems gefällt.

> Soll ich dann immer noch ltoa
> verwenden, oder immer erst prüfen wie groß die Zahl ist und dann ggf.
> itoa verwenden?
Aufwand gegen Nutzen gleich Null, lieber immer ltoa benutzen, spart die 
Casts, die nötig werden um die Warnungen zu ignorieren.

:-) Meine Meinung, keep it simple, stupid and short. :-)
Gast #1852652
Lesenswert?

O.k Danke :-)

Floh schrieb:
> Platzverschwendung, aber wems gefällt.

Ja klar, nur hab ich nen Impulszaehler gebaut, wodurch meine Variablen, 
die ich anzeigen möchte, sich eben von 8-Bit bis 32-Bit erstrecken. Ich 
könnte jetzt noch eine übergeordnete Funktion schreiben, die checkt, wie 
groß die Zahl ist, und dann die eine (bis 16-Bit Breite) oder andere 
(bis 32-Bit Breite) Funktion aufruft - doch glaub ich, dass hier Aufwand 
und Nutzen sich kompensieren und ich dann immer gleich mit Kanonenkugeln 
auf Spatzen schieße....

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren