AD-Wandler, Sprache: C

Gast #717761
Lesenswert?

Hallo zusammen!

Ich habe ein kleines Problem. Ich habe eben ein Programm für den 8Bit 
AD-Wandler in C geschriben. Der AD-Wert soll mit 8 LED angezeigt werden 
und zudem noch via RS232 dezimal auf einem Terminal auf dem PC 
ausgegeben werden
( printf("%d",read_adc()); )
Ich dachte, auf dem PC gibt es nun Zahlen zwischen 0 und 255 aus, jedoch 
gibt es Zahlen von 0 - 128 und von -128 - -1 aus!!!! Wieso das??
#717805
Lesenswert?

Kristian wrote:
> Was muss ich den eingeben, wenn ich z.B. einen 10Bit Wandler brauchen
> möchte???

Falsche Frage.
Richtige Frage:
Welchen Datentyp muss deine read_adc() Funktion liefern?
Nach diesem Datentyp bestimmt sich dann das Formatzeichen,
welches im printf benutzt werden muss.

Hintergrund: Im Aufruf der printf Funktion steht erst mal
ein arithmetischer Ausdruck. Ob dieser Ausdruck nun
   0
oder
   a     ( a sei eine int Variable )
oder
   a + 4
oder
   function()     (function sei eine Funktion die einen int liefert)
oder
   a + function()
oder
   a + function() + 5
oder
   ....

lautet, ist erst mal dem printf völlig egal. Da steht ein
arithmetischer Ausdruck und wenn dieser Ausdruck ausgewertet
wird, dann entsteht daraus eine ganze Zahl mit Vorzeichen
(eben ein int). Bei einem int lautet aber das Formatierzeichen
auf %d.

Hast du aber eine ganze Zahl mit 16 Bit ohne Vorzeichen, dann
lautet das Formatierzeichen auf %u

Die Frage lautet daher nicht: Was muss read_adc liefern, damit ein
%d das richtige ausgibt.
Die Frage lautet umgekehrt: Was habe ich in meiner Argumentliste
und wie muss daher das zugehörige Formatierzeichen im Formatierstring
aussehen.

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