www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Variablendeklaration


Autor: Manfred Peters (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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);

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Gerhard Gunzelmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Manfred Peters (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke für die schnelle hilfe

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.