Dezimal: | 0 1234 1234567890123456789 |
Oktal: | 012 0123 |
Hexadezimal: | 0x0 0x2a 0xffff |
Der Typ einer Integer-Konstanten ist abhängig von der Größe des Wertes:
Dezimal-Konstanten: int, sonst long int, sonst unsigned long int.
Hex- und Oktalkonstanten: int, sonst unsigned int, sonst long int, sonst unsigned long int.
Vorzeichenbehaftung und Länge können auch explizit angegeben werden:
void f(int); void f(long int); void f(unsigned int); void f(unsigned long int); ... f(3) // ruft f(int) f(3L) // ruft f(long) f(3U) // ruft f(unsigned int) f(3LU) // ruft f(unsigned long int)
Form: 1.2 .23 44. 1.2e10 456.789e-19
Typ: stets double außer wenn mit Suffix f versehen wie
3.145159f
Typ: char
Einige Sonderformen | |
Zeichen | Schreibweise |
newline | '\n' |
horizontal tab | '\t' |
alert | '\a' |
backslash | '\\' |
single quote | '\'' |
double quote | '"' |
integer 0 | '\0' |
octal number | '\ooo' (1-3 Ziffern) |
hex number | '\xhhh' (1-3 Ziffern) |
Typ: char-Array angemessener Länge.
Ein String endet mit '\0'
:
sizeof("hallo") == 6
(im Ggs. zu strlen("hallo") == 5
)
Übrigens:
"this is not a string but a syntax error"
aber
char text[] = "So lassen sich auch richtig" "lange String-Literale angeben.";
Deklaration mit dem Schlüsselwort const:
const float betrag = 3.60;
Eine Konstante darf nicht verändert werden.
Sie muß initialisert werden.
Zuweisung der Adresse einer Konstanten an einen Zeiger ist verboten:
float *fp = &betrag; // FEHLER!
Aber man kann Zeiger auf const-Objekte definieren:
// Zeiger auf Konstantes Float: const float *fp = &betrag; *fp = 0.0; // FEHLER! float xx; fp = &xx; // OK
Ein konstanter Zeiger auf ein float sieht so aus:
float *const fp = &xx; fp = 0; // FEHLER! *fp += 1.5; // OK
enum {rund, eckig, platt};
entspricht
const int rund = 0; const int eckig = 1; const int platt = 2;
Eine Aufzählung kann auch benannt werden:
enum see {pader, lippe, diemel, nord};
see ist ein neuer Typ. Implizite Umwandlung nach int ist definiert, aber nicht umgekehrt.
Die Werte von Aufzählungselementen können auch angegeben werden:
enum iomode { out=100, in=2, fast_in, inout=0x1f, fast_inout=not_impl}
Nicht angegebene Werte sind um 1 größer als ihr Vorgänger, falls sie einen haben, sonst 0;
Aufzählungen können auch lokal in Klassen definiert werden.