C-Konstanten und Literale: Typen, Verwendung & Best Practices
Konstanten beziehen sich auf feste Werte, die das Programm während seiner Ausführung nicht ändern darf. Diese festen Werte werden auch Literale genannt.
Konstanten können einer der grundlegenden Datentypen sein: Ganzzahlkonstante, Gleitkommakonstante, Zeichenkonstante oder String-Literal. Es gibt auch Aufzählungskonstanten.
Konstanten werden wie reguläre Variablen behandelt, außer dass ihre Werte nach der Definition nicht geändert werden können.
Ganzzahlliterale (Integer Literals)
Ein Ganzzahlliteral kann eine dezimale, oktale oder hexadezimale Konstante sein. Ein Präfix spezifiziert die Basis: 0x oder 0X für hexadezimal, 0 für oktal, nichts für dezimal.
Ein Ganzzahlliteral kann auch einen Suffix haben, der eine Kombination aus U (unsigned) und L (long) ist. Der Suffix kann groß- oder kleingeschrieben und in beliebiger Reihenfolge sein.
Beispiele:
212 /* Legal */
215u /* Legal */
0xFeeL /* Legal */
078 /* Illegal: 8 ist keine Oktalziffer */
032UU /* Illegal: Suffix darf nicht wiederholt werden */
Weitere Beispiele:
85 /* dezimal */
0213 /* oktal */
0x4b /* hexadezimal */
30 /* int */
30u /* unsigned int */
30l /* long */
30ul /* unsigned long */
Gleitkommaliterale (Floating-point Literals)
Ein Gleitkommaliteral hat einen ganzzahligen Teil, einen Dezimalpunkt, einen Bruchteil und einen Exponententeil. Sie können Gleitkommaliterale entweder in Dezimalform oder Exponentialform darstellen.
Bei Dezimalform müssen Sie den Dezimalpunkt, den Exponenten oder beide angeben; bei Exponentialform den ganzzahligen Teil, den Bruchteil oder beide. Der signierte Exponent wird durch e oder E eingeleitet.
3.14159 /* Legal */
314159E-5L /* Legal */
510E /* Illegal: unvollständiger Exponent */
210f /* Illegal: kein Dezimalpunkt oder Exponent */
.e55 /* Illegal: fehlender ganzzahliger oder Bruchteil */
Zeichenkonstanten (Character Constants)
Zeichenliterale werden in einfache Anführungszeichen gesetzt, z. B. 'x', und können in einer char-Variable gespeichert werden.
Ein Zeichenliteral kann ein normales Zeichen (z. B. 'x'), eine Escape-Sequenz (z. B. '\t') oder ein universelles Zeichen (z. B. '\u02C0') sein.
Bestimmte Zeichen in C haben besondere Bedeutung, wenn ihnen ein Backslash vorangestellt ist:
| Escape-Sequenz | Bedeutung |
|---|---|
| \\ | \ Zeichen |
| \' | ' Zeichen |
| \" | " Zeichen |
| \? | ? Zeichen |
| \a | Alert / Bell |
| \b | Backspace |
| \f | Form feed |
| \n | Neue Zeile (Newline) |
| \r | Wagenrücklauf (Carriage return) |
| \t | Horizontaler Tab |
| \v | Vertikaler Tab |
| \ooo | Oktalzahl (1-3 Ziffern) |
| \xhh... | Hexadezimalzahl (1+ Ziffern) |
Beispiel für Escape-Sequenzen:
#include <stdio.h>
int main() {
printf("Hello\tWorld\n\n");
return 0;
}
Ausgabe:
Hello World
String-Literale (String Literals)
String-Literale werden in doppelte Anführungszeichen gesetzt "". Ein String enthält Zeichen ähnlich wie Zeichenliterale: normale Zeichen, Escape-Sequenzen und universelle Zeichen.
Sie können eine lange Zeile in mehrere Zeilen aufteilen, indem Sie String-Literale verwenden und diese durch Whitespaces trennen.
"hello, dear"
"hello, \ dear"
"hello, " "d" "ear"
Alle drei Formen sind identische Strings.
Konstanten definieren
Es gibt zwei einfache Wege in C, Konstanten zu definieren:
- Mit dem #define-Präprozessor.
- Mit dem const-Schlüsselwort.
Der #define-Präprozessor
Syntax: #define identifier value
#include <stdio.h>
#define LAENGE 10
#define BREITE 5
#define NEWLINE '\n'
int main() {
int flaeche;
flaeche = LAENGE * BREITE;
printf("Wert von flaeche: %d", flaeche);
printf("%c", NEWLINE);
return 0;
}
Ausgabe: Wert von flaeche: 50
Das const-Schlüsselwort
Syntax: const typ variable = wert;
#include <stdio.h>
int main() {
const int LAENGE = 10;
const int BREITE = 5;
const char NEWLINE = '\n';
int flaeche = LAENGE * BREITE;
printf("Wert von flaeche: %d", flaeche);
printf("%c", NEWLINE);
return 0;
}
Ausgabe: Wert von flaeche: 50
Hinweis: Es ist gute Programmierpraxis, Konstanten in GROSSBUCHSTABEN zu definieren.
C Sprache
- Umfassende Zusammenfassung: Widerstände, Spulen und Kondensatoren in AC-Kreisen
- C# Keywords und Identifiers verstehen: Regeln, Listen und Best Practices
- C# Klassen & Objekte: Fundamente für robustes OOP
- C# Abstrakte Klassen & Methoden meistern: Praktischer Leitfaden
- C# Partielle Klassen und Methoden verstehen
- Versiegelte Klassen und Methoden in C# meistern
- C++-Variablen, Literale und Konstanten meistern: Ein umfassender Leitfaden
- C Schlüsselwörter & Bezeichner: Ein praktischer Leitfaden
- C Variablen, Konstanten und Literale: Ein vollständiger Leitfaden
- C Variablen, Datentypen und Konstanten – Ein praktischer Leitfaden