Kommentare in C (Kommentare in C), Lektion, Seite 722916
https://www.purl.org/stefan_ram/pub/kommentare_c (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
C-Kurs

Kommentare in C 

Traditionelle Kommentare

In C -Programme können Kommentare  eingefügt werden.

Kommentare können (außerhalb eines Kommentars und eines Zeichenfolgenliterals) an jeder Stelle, an der auch Leerraum stehen dürfte, mit dem Zeichenpaar »/*« eingeleitet werden. Sie enden  mit dem ersten folgenden Zeichenpaar »*/«. (In beiden Zeichenpaaren darf kein Leerraum zwischen dem Stern und dem Schrägstrich stehen.)

Das Zeichen »/« wird „Schrägstrich“ genannt.

Das Zeichen »*« wird „Stern“ (oder „Sternchen“) genannt.

Das Zeichenpaar »/*« muß genau so geschrieben werden (es darf kein Leerzeichen eingefügt werden).

Innerhalb  eines solchen Kommentars hat das Zeichenpaar »/*« keine besondere Bedeutung.

Ein Kommentar gilt insgesamt als ein Leerraumzeichen. Der in einem Kommentar enthaltene Text wird von einer C -Implementation im allgemeinen ignoriert. Daher können Kommentare verwendet werden, um irgendwelche Notizen in ein Programm zu schreiben oder auch um lexikalische Einheiten zu trennen.

main.c

#include <stdio.h>

int main( void )
{ printf
( "%d\n", -/* Vorzeichenwechsel */-/* Vorzeichenwechsel */65 ); }

stdout
65

Entfernt man die beiden Kommentare in dem obigen korrekte Programm, so erhält man das folgende fehlerhafte Programm.

main.c

#include <stdio.h>

int main( void )
{ printf
( "%d\n", --65 ); }

Konsole

main.c: In function 'main':

main.c:6:19: error: lvalue required as decrement operand
{ printf
( "%d\n", --65 ); }
^

Konsole (übersetzt)

main.c: In der Funktion 'main':

main.c:6:19: Fehler: Als Operand des Dekrements wird ein L-Wert erwartet
{ printf
( "%d\n", --65 ); }
^

Kommentare werden vor der weiteren Verarbeitung eines Quelltextes bei der Übersetzung praktisch durch ein Leerzeichen ersetzt. Aus dem obigen Programm mit  Kommentaren wird also das folgende Programm gemacht.

main.c

#include <stdio.h>

int main( void )
{ printf
( "%d\n", - - 65 ); }

stdout
65

Zeichenfolgenliterale

Der Kommentareinleiter »/*« leitet innerhalb eines Zeichenfolgenliterals keinen Kommentar ein, sondern gilt nur als Teil der Zeichenfolge.

main.c

#include <stdio.h>

int main( void )
{ printf
( "%s\n", "ABC/*DEF*/GHI" ); }

stdout
ABC/*DEF*/GHI

Umgekehrt gelten Anführungszeichen in Kommentaren nicht als Beginn eines Zeichenfolgenliterals.

main.c

#include <stdio.h>

int main( void )
{ printf
( "%d\n", 2/*"*/ ); }

stdout
2

Übungsfragen

?   Kommentare zählen

Ist das folgende Programm korrekt, und, wenn ja: wie viele Kommentare finden sich darin?

main.c

#include <stdio.h>

int main( void )
{ printf
( "%d\n", 65/* alpha /* // /** gamma */ ); }

?   Kommentare zählen *

Ist das folgende Programm korrekt, und, wenn ja: wie viele Kommentare finden sich darin?

main.c

#include <stdio.h>

int main( void )
{ printf
( "%d\n", 65/* alpha /* gamma */ gamma */ ); }

?   Kommentare zählen *

Ist das folgende Programm korrekt, und, wenn ja: wie viele Kommentare finden sich darin?

main.c

#include <stdio.h>

int main( void )
{ printf
( "%s\n", "/* alpha " ); }

?   Kommentare zählen *

Ist das folgende Programm korrekt, und, wenn ja: wie viele Kommentare finden sich darin?

main.c

#include <stdio.h>

int main( void )
{ printf
( "%s\n", /* /* */ "*/" ); }

?   Kommentare zählen *

Ist das folgende Programm korrekt, und, wenn ja: wie viele Kommentare finden sich darin?

main.c

#include <stdio.h>

int main( void )
{ printf
( "%d\n", 65/* alpha /* "delta" */ gamma */ ); }

Leerraumdiagramme für Leerraum *

Die folgenden Leerraumdiagramme beschreiben Leerraum einschließlich von Kommentaren. Ein genaues Verständnis dieser Diagramme ist aber für den Rest dieses Kurses nicht unbedingt wichtig.

Ein Leerraumdiagramm  ist genauso zu verstehen, wie ein morphologisches Diagramm. Wir nennen es aber nicht „morphologisches Diagramm“, da morphologische Diagramme lexikalische Einheiten beschreiben und Leerraum keine lexikalische Einheit ist. Leerraumdiagramme werden daher auch nicht mit »|-|«, sondern mit »| |« gekennzeichnet.

Leerraumkomponente

.-------------.
| |----.----------------------------------------->| Leerzeichen |----.--->| |
| '-------------' ^
| |
| .-------------. |
'----------------------------------------->| Zeilenende |--->'
| '-------------' |
| |
v |
.-. |
( / ) |
'-' |
| |
| .---------------. |
| | jedes Zeichen | |
| .---| ausser "*" |<--------. |
| | | und "/" | | |
| | '---------------' | |
| .-. v | |
'--->( * )---'---------------------------->' |
'-' | ^ ^ |
| | | |
| | | |
.<-----------. | |
| | | |
| .-. | | |
'--->( / )---' .------------. |
| '-' | | |
| | | |
| v .-. | .-. |
'----------------'--->( * )---'---( / )----------'
'-' '-'

Leerraum

.--------------------.
| |---.--->| Leerraumkomponente |---.--->| |
^ '--------------------' |
| |
'-----------------------------'

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram722916 stefan_ram:722916 Kommentare in C Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722916, slrprddef722916, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/kommentare_c