Forum: Mikrocontroller und Digitale Elektronik LCD - Anzeige Immer Func. "ltoa()" oder erst Var-Groesse vergleichen


von Marcel (Gast)


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

von Floh (Gast)


Lesenswert?

Marcel schrieb:
> 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?

Unverständlich?
Wenn du ein int ausgeben willst -> itoa
wenn du ein long ausgeben willst -> ltoa
:-)

von Marcel (Gast)


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

von Floh (Gast)


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. :-)

von Marcel (Gast)


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....

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.