namespace cpp

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


kennen:sprachkern

Sprachkern

Ein Programmierer darf durchaus erwarten,
dass er die gesamte Sprache kennt, versteht und regelmäßig nutzt.
— Brian Kernighan & Dennis Ritchie : Programmieren in C

Quelltextbausteine

Ein Programm kann aus mehreren Quelltexten (Modulen) bestehen. Ein (korrekter) Quelltext ist eine Folge von Deklarationen und Definitionen. Die Syntax (Grammatik) legt fest, welche Quelltexte korrekt (wohlgeformt) sind. Einzelne Zeichen ("Alphabet") und Gruppen von Zeichen bilden Symbole (lexikalische Einheiten). Beim Erkennen von Symbolen wird stets die maximal mögliche Länge des Symbols verarbeitet. So wird x+++++y als x ++ ++ + y zerlegt (was dann zu einem syntaktischen Fehler führt) und nicht als das auch mögliche x ++ + ++ y. Dies ist einer der seltenen Fälle, in denen Leerräume (white spaces) eine sprachliche Bedeutung haben. Ansonsten ist der Quelltext frei formatierbar. Einrückungen und Leerzeilen gliedern den Quelltext optisch.

Zeichen

Unabhängig von der internen Darstellung besteht ein Quelltext aus den Buchstaben

  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
_ a b c d e f g h i j k l m n o p q r s t u v w x y z

(der Unterstrich _ gilt als Buchstabe), den Ziffern

0 1 2 3 4 5 6 7 8 9

und den Sonderzeichen

+ - * / % ? : = [ ] ( ) { } , . < > ! | & ~ ^ # ' " \

Leerzeichen, Tabulatoren und Zeilenumbrüche ("white spaces") gliedern den Quelltext.

Namen

Namen (Bezeichner) beginnen mit einem Buchstaben, darauf können beliebig viele Buchstaben oder Ziffern folgen. Groß- und kleinschreibung wird unterschieden. Schlüsselwörter sind reservierte Namen mit vordefinierter Bedeutung.

Literale

Zahlen

Zahlkonstanten beginnen mit einer Ziffer. Ganzzahlen können dezimal, oktal oder hexadezimal angegeben werden:

Basis Ziffern Anfangszeichen
127 10 0…9 keine 0 (bei mehrziffrigen Zahlen)
0177 8 0…7 0
0x7F 16 0…9, A…F, a…f 0x

C++14 erlaubt Binärzahlen 0b101010 und Stellentrennzeichen 1'234'567. Dezimalzahlen können ein Vorzeichen haben. Durch Anfügen des Buchstabens l oder L erhält die Konstante den Typ long int. Ein u oder U am Ende markiert die Zahl als vorzeichenlos (unsigned).

65      255     65535   4294967295U
0x41    255U    65535L  -1UL

Gleitkommazahlen enthalten einen Dezimalpunkt oder einen Exponenten. Sie haben den Typ double. Mit f oder F am Ende wird der Typ float, mit l oder L wird long double erzwungen.

123.0   0.123   1.602e-19f
123.     .123   2999792.458E+8L

Zeichen und Zeichenketten

Apostrophe (einfache Anführungsstriche) umschließen Zeichenkonstanten 'a'. Zeichenketten beginnen und enden mit doppelten Anführungsstrichen ("Gänsefüßchen"). In Zeichenketten darf kein Zeilenende auftreten. Aufeinanderfolgende, höchstens durch white spaces getrennte Zeichenketten werden zu einer verschmolzen:

   "Das ist eine "   
   "Zeichenkette"

Durch vorangestelltes l oder L erfolgt die Codierung als "wide character"

   L'x'

für Plattformen mit erweiterten Zeichensätzen.

Einige Zeichen müssen durch Kombination mit dem fallenden Schrägstrich (backslash) gebildet werden (Escape-Sequenzen):

\a alert Warnsignal (Piepton)
\b backspace ein Zeichen zurück
\f form feed Blattvorschub (bei Druckern)
\n new line Zeilenumbruch
\r carriage return zum Zeilenanfang (ohne Zeilenvorschub)
\t tab zur nächsten Tabulatorposition
\\ backslash druckt \
\v vertical tab zur nächsten Zeile (ohne Rücklauf)
\' quote Apostroph
\" double quote Gänsefüßchen
\0 nul Endekennung von Zeichenketten
\ooo octal value Zeichenwert (1..3 Oktalziffern)
\xhh hex value Zeichenwert (1..3 Hexziffern)
\uhhhh wide char Unicode-Zeichen (wchar_t)
\Uhhhhhhhh mit 4 oder 8 Hexziffern

Bei einem raw string R"(...)" werden keine Ersetzungen mit dem Backslash durchgeführt. Der eigentliche Inhalt kann durch eine Begrenzerfolge außerhalb der runden Klammern eingeschlossen werden: R"**(...)**".

Kommentare

Kommentare werden bei der Programmübersetzung ignoriert. Sie sind nur zur menschlichen Kommunikation bestimmt.

C-Kommentare

/* Computer sind doof */

beginnen und enden mit Schrägstrich und Stern und sind nicht schachtelbar. Sie können sich über mehrere Zeilen erstrecken (Kommentarblock).

C++-Kommentare

// gelten bis zum Zeilenende.

Syntaktische Einheiten

Ausdrücke und Anweisungen

Anweisungen werden mit einem Semikolon ; abgeschlossen. Was vor dem Semikolon steht, heißt Ausdruck (der auch leer sein kann). Ausdrücke sind u.a. Deklarationen, Funktionsaufrufe, Zuweisungen, Konstanten, Namen und durch Operatoren verbundene Ausdrücke.

const double pi = 4*atan(1.0);

Blöcke

Geschweifte Klammern { } umschließen Blöcke (Deklarations- oder Anweisungsfolgen). Blöcke sind ineinander schachtelbar oder können auch leer sein. Jeder Funktionsrumpf ist ein Block.

Präprozessoranweisungen

Doppelkreuze # am Zeilenanfang leiten Anweisungen für den Präprozessor ein. Sie gehören genaugenommen nicht zur Sprache, jedoch kommt kein ernsthaftes Programm ohne sie aus, weil Header der Standardbibliothek eingebunden werden müssen (Übersetzungsprozess).

#include <iostream>  // Ein-/Ausgabe
#include <cmath>     // mathematische Funktionen
kennen/sprachkern.txt · Zuletzt geändert: 2019-01-13 14:19 von rrichter