Syntax
Dieses Dokument beschreibt knapp, was in C legal ist.
Was ethisch richtig ist, steht im
Programmierstil.
Datentypen
Primitive Typen
Speicher- klasse |
Zugriff |
Vorzeichen |
Größe |
Typ |
Bits |
Beschreibung |
auto
register extern static thread_local |
const
volatile |
|
|
void |
- |
Anonymer Typ |
| bool |
FIXME |
Wahrheitswert |
signed unsigned |
char |
8 |
Zeichencode |
short long |
int |
16/32/64 |
Ganzzahl |
|
double |
64/80 |
Gleitkommazahl |
|
float |
32 |
Gleitkommazahl |
Speicherklasse
auto
- Variable auf dem Stapelspeicher ablegen (Standard für lokale Variablen und Parameter).
register
- Variable wenn möglich im Prozessorregister halten.
- Wird normalerweise ignoriert, besser auf Optimierung des Compilers verlassen.
extern
- Funktion oder globale Variable wird in einer anderen Übersetzungseinheit definiert.
static
- Variable im statischen Programmspeicher ablegen.
- Funktion oder globale Variable ist nur in dieser Übersetzungseinheit sichtbar.
- [C++] Klassen-Methode, kann ohne Exemplar aufgerufen werden.
thread_local
- Variable im statischen Threadspeicher ablegen.
- Variable wird vor Beginn des Threads initialisiert.
Zugriff
const
- Variable ist unveränderlich.
- [C++] Methode verändert nicht den Zustand des Exemplars.
volatile
- Variable kann sich spontan ändern, Optimierungen bitte deaktivieren.
Vorzeichen
signed
- Vorzeichenbehaftete Ganzzahl
unsigned
- Vorzeichenlos Ganzzahl
Größe/Genauigkeit
short
- Ganz- oder Gleitkommazahl mit minimaler Genauigkeit
long
- Ganz- oder Gleitkommazahl mit maximaler Genauigkeit
Zusammengesetzte Typen
enum
- Aufzählung
union
- Alternative mit überlappenden Mitgliedern
struct
- Klasse mit standardmäßig öffentlichen Mitgliedern in C++
enum days { sunday, monday, tuesday, wednesday, thursday, friday, saturday };
union converter
{
int x;
float y;
};
struct point
{
double x;
double y;
};
Kontrollstrukturen
- Verzweigung
if (condition) { statements } else { statements }
- Ternärer Operator
condition ? expression : expression
- Mehrfachverzweigung
switch (value) { case label: statements; break; default: statements; break; }
- Schleife mit Abbruchbedingung
while (condition) { statements }
do { statements } while (condition);
- Schleife mit Initialisierung, Abbruchbedingung und Inkrement
for (statement; condition; statement) { statements }
- Aktuellen Schleifendurchlauf beenden
continue;
- Schleife verlassen
break;
- Unbedingter Sprung
goto label;
- Rücksprung aus Funktion
return expression;
- Anweisungen in Maschinencode einbetten
asm { instructions }
Funktionen
inline
- Rumpf expandieren. Lieber auf Compiler-Optimierungen verlassen.
type identifier (arguments)
{
statements
return expression;
}
Funktionszeiger
- Deklaration, zum Beispiel als Argument einer Funktion
-
type (* identifier) (arguments);
- Array von Funktionszeigern
-
type (* identifier[size]) (arguments);