Forum: Mikrocontroller und Digitale Elektronik Variablendeklaration


von Manfred Peters (Gast)


Lesenswert?

Guten,
habe folgende Befehlszeile in einer Funktion kann mir bitte jemand
auskunft geben was dort geschieht!
ch ist als unsigned char deklariert!


ch = ("%c" , '0' + ziff);

von inoffizieller WM-Rahul (Gast)


Lesenswert?

'0' + ziff greift auf den ASCII-Zeichensatz zu, und schreibt eine Zahl
zwischen 0 und 9 dort hinein, sofern sich 0<=ziff <=9 ist.
"%c" wird eine Formatierungsangaben sein, wobei da eigentlich noch
sowas wie sprintf fehlt. Bei dessen Verwendung braucht man aber nicht
den "'0' + ziff" Ausdruck...

von Gerhard Gunzelmann (Gast)


Lesenswert?

Hallo Manfred

das sieht zwar nicht nach Ansi-C aus, aber in Ahnlehnung an einen
sprintf - Befehl könnte das heissen:

%c : Char
'0' ist ASCII 0 also 30hex, + ziff. ziff wird wohl hex sein. Also es
sei ziff = 3, dann enthält ch nach dem Befehl das Zeichen 33hex =
Ziffer 3 in ASCII.

Gerhard

von Manfred Peters (Gast)


Lesenswert?

danke für die schnelle hilfe

von Karl heinz B. (kbucheg)


Lesenswert?

Bevor sich hier noch mehr fragen:

Da ist ein Komma-Operator in Aktion.

Der Komma-Operator:
Alle Teilasdrücke werden von links nach rechts abgearbeitet.
Das Ergebnis des kompletten Ausdrucks ist der Wert des
ganz rechts stehenden Ausdrucks.

"%c", '0' + ziff

sind also 2 Teilausdrücke, die mittels Komma-Operator zu einem
Ausdruck zusammengefügt wurden. Der Wert des kompletten Ausdrucks
ist  '0' + ziff. Das "%c" (also: alle Teilausdrücke links) ist
eigentlich nur für ev. Nebeneffekte interressant. Hier allerdings
gibt es keinen Nebeneffekt, sodass der Compiler das "%c"
wahrscheinlich rausoptimiert.

Warum hat der Programmierer das so gemacht?
Ich kann nur raten: Er wollte 'kommentieren', dass hier eine
Wandlung von int nach char für ein Digit durchgeführt wird
und hat als 'Kommentar' dir printf() Formatierung reingeschrieben.
Alles in allem eine sehr zweifelhafte Form der Kommentierung.

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.