Gast
#359940
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);
|
Anzeige
|
Variablendeklaration
Gast
#359940
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);
Gast
#359941
'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...
Gast
#359942
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
Gast
#359943
danke für die schnelle hilfe 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. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|