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);
'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...
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.