Inhaltsverzeichnis
Eine Konstante ist ein Datum, das sich nach seiner Initialisierung im aktuellen Gültigkeitsbereich nicht mehr verändern lässt.
Einleitung
Ein einfaches Beispiel hierfür ist z.B. die Zahl Pi. Wie allgemein bekannt, entspricht Pi etwa dem Wert 3.1416. Anstatt nun bei jeder Verwendung von Pi den Zahlenwert 3.1416 zu schreiben, kann dafür auch ein Name vergeben werden, z.B. PI. Dieser Name wird dann anstelle des Zahlenwertes an den entsprechenden Stellen im Programm eingesetzt, an denen Pi verwendet wird. Wird nun während des Programmtests z.B. festgestellt, dass die Angabe von Pi zu ungenau ist, so müssen nun nicht mehr im gesamten Programm alle Pi-Werte verändert werden, sondern es wird lediglich die einmal definierte Konstante PI angepasst.
C++ kennt unter anderem folgende Arten von Konstanten, die wir uns in dieser Lektion ansehen werden:
- Ganzzahl-Konstanten
- Gleitkomma-Konstanten
- Zeichen- und Stringkonstanten
- Objektkonstanten (wird erst später behandelt)
Generell können aber von jedem beliebigen Datentyp Konstanten gebildet werden.
Außer nach der Konstantenart werden Konstanten noch nach unbenannten und benannten Konstanten unterschieden.
Literal
Der Begriff Literal ist im Prinzip nur ein anderes Wort für eine zahlenmäßige Konstante. In der Praxis werden direkte Zahlenangaben wie z.B. die Zahl 5 oder auch 3.14 als Literale bezeichnet, während der Begriff Konstante für benannte Konstanten verwendet wird.
Ganzzahl-Literale
Ganzzahl-Literale besitzen standardmäßig den kleinsten Datentyp, in dem ihr Wert repräsentiert werden kann. Dabei wird folgende Reihenfolge durchlaufen: int, long und unsigned long. Eine Ausnahme von dieser Reihenfolge bilden Ganzzahl-Literale die in oktaler bzw. hexadezimaler Schreibweise angegeben werden. Hier lautet die Reihenfolge: int, unsigned int, long und unsigned long. Literale in oktaler Schreibweise erhalten den Präfix 0 und Literale in hexadezimaler Schreibweise den Präfix 0x bzw. 0X.
Um einem Ganzzahl-Literal explizit einen bestimmten Datentyp zuzuweisen, wird die Zahlenangabe mit einem Suffix erweitert. Bei diesen Erweiterungen wird die Groß-/Kleinschreibung ausnahmsweise ignoriert. Die Tabelle unten enthält eine Übersicht über die verschiedenen Erweiterungen so wie einige Beispiele dazu:
Literal ohne Suffix | 3 | -5 | +4 |
Oktal-Literal, Präfix 0 | 03 | 012 | 0665 |
Hex-Literal, Präfix 0x | 0x40 | 0XFF00 | –0xFF |
unsigned Literal, Suffix U | 10U | 0xFF00u | 012u |
long Literal, Suffix L | -10L | 0xFF00L | 012l |
unsigned long Literal, Suffix UL | 10UL | 0xFFul | 012ul |
![]() |
Gleitkomma-Literale
Gleitkomma-Literale bestehen aus Ziffern und einem Dezimalpunkt. Optional kann ein Gleitkomma-Literal noch einen Exponenten enthalten. Standardmäßig sind Gleitkomma-Literale vom Datentyp double.
Um einem Gleitkomma-Literal einen von double abweichenden Datentyp zuzuweisen, wird das Literal mit einem Suffix laut nachfolgender Tabelle erweitert. Auch hier spielt die Groß-/Kleinschreibung bei der Erweiterung keine Rolle.
double Literal, ohne Suffix | -1.0 | 1. | +3.32 | -3.1E+4 |
float Literal, Suffix F | -1.0f | 1.F | +3.32f | -3.1E+4F |
long double Literal, Suffix L | -1.0L | 1.L | +3.32L | -3.1e+4L |
Zeichen- und String-Literale
Zeichen-Literale sind einzelne Buchstaben oder auch Escape-Sequenzen, die in Hochkomma eingeschlossen werden. Sie besitzen den Datentyp char. Um ein Zeichen-Literal als wide-character Literal (Datentyp wchar_t) zu kennzeichnen, wird das Literal mit dem Präfix L erweitert.
String-Literale werden in Anführungszeichen eingeschlossen und die einzelnen Zeichen innerhalb des String-Literals sind vom Datentyp char. Um ein String-Literal mit Zeichen vom Typ wide-character (Datentyp wchar_t)zu definieren, wird das String-Literal mit dem Präfix L versehen (siehe erstes String-Literal in nachfolgender Tabelle).
Zeichen-Literal | ‚a‘ | ASCII-Zeichen a |
‚\n‘ | Zeilenvorschub (Escape-Sequenz) | |
L‚A‘ | wide-character A | |
String-Literal | L„wide-character“ | wide-character String |
„char String“ | char String |
String-Literale weisen noch drei Besonderheiten auf:
- Ihr Datentyp ist ‚Feld mit n konstanten Zeichen‘ (const char[n] bzw. const wchar_t[n]), wobei n die Anzahl der Zeichen plus 1 ist. Das Verändern von Zeichen in einem String-Literal führt zu undefiniertem Verhalten!
- Sie haben immer die Speicherklasse static.
- Das letzte Zeichen eines String-Literals ist immer eine 0 (null).
Felder und Speicherklassen werden später noch behandelt.
Hintereinander stehende String-Literale werden stets zusammenfasst. Somit ist die nachfolgende Ausgabe korrekt, da die drei String-Literale zu einem Literal zusammengefasst werden. Das Einzige worauf Sie dabei achten müssen ist, dass Sie keine char und wchar_t String-Literale nebeneinander stellen dürfen.
![]() cout << „Diese ist ein String-Literal“ // Ein String-Literal über mehrere Zeilen „obwohl es über mehrere“ „Zeilen geht!\n“; |
Benannte Konstanten
Benannte Konstanten werden prinzipiell wie Variablen definiert, d.h. sie haben einen Datentyp und einen Namen (Konstantenname). Zusätzlich erfolgt jedoch vor dem Datentyp die Angabe des Schlüsselwortes const. Und da Konstanten (ihrem Sinn nach) während des Programmlaufs ihren Wert nicht ändern können, müssen Sie bei ihrer Definition initialisiert werden.
Datentyp | Konstantenname | Initialwert |
const int | NOOFLINES | = 24; |
const char | LINEFEED | = ‚\n‘; |
const float | PI | = 3.1416f; |
const short | NOTTHIS | ; |
Beachten Sie die letzte Definition in obiger Tabelle. Diese Definition erzeugt einen Übersetzungsfehler, da die Konstante nicht initialisiert wird.
Benannte Konstanten sind standardmäßig modulglobal, d.h. sie gelten nur in der Quellcode-Datei, in der sie definiert sind. Benötigen Sie eine benannte Konstante in mehreren Modulen (Quellcode-Dateien), so legen Sie die Konstante am besten in einer eigenen Header-Datei (.h Datei) ab, die sie dann in den entsprechenden Modulen mit #include „xx.h“; einbinden. Im Beispiel unten wird die Konstante PI in der Header-Datei myinc.h definiert. Diese Datei wird dann sowohl im Modul main.cpp wie auch im Modul mod1.cpp eingebunden. Dadurch ist in beiden Modulen die Konstante PI bekannt.
![]() const float PI = 3.1416f; |
![]() #include <iostream> #include „myinc.h“ using namespace std; int main () |
![]() #include <iostream> #include „myinc.h“ using namespace std; void PrintIt () |
Damit Konstanten von Variablen unterschieden werden können, werden Konstantennamen innerhalb des Kurses stets in Großbuchstaben geschrieben. Dies ist aber keine Vorschrift!
C++ Kurs von Wolfgang Schröder
http://www.cpp-tutor.de/cpp/index.html
C++ Tutorial von Toni Schornböck (Shade Of Mine)
http://tutorial.schornboeck.net/inhalt.htm
C++ Tutorial von Volkard Henkel
http://www.volkard.de/vcppkold/inhalt.html
Correct C++ tutorial von Alf P. Steinbach
http://home.no.net/dubjai/win32cpptut/html/
Disclaimer
: Der Autor/Sprecher übernimmt keinerlei Gewähr für die Aktualität, Korrektheit, Vollständigkeit oder Qualität der bereitgestellten Informationen. Haftungsansprüche gegen den Verfasser, welche sich auf Schäden materieller oder ideeller Art beziehen, die durch die Nutzung der dargebotenen Informationen bzw. durch die Nutzung fehlerhafter und unvollständiger Informationen verursacht wurden, sind grundsätzlich im weitest zulässigen Rahmen ausgeschlossen. Der Artikel bzw. das Video stellt in keiner Art und Weise eine professionelle Anlage-, Investitions-, Vermögens-, Steuerberatung dar und ersetzt diese auch nicht. In diesem Artikel bzw. das Video werden keine Garantien oder Versprechungen zu Gewinnen gemacht. Alle Aussagen in diesem und anderen Artikel bzw. Video auf Bitfantastic.com und über den dazugehörigen Youtube Kanal entsprechen meiner subjektiven Meinung. Bitfantastic.com ist eine Informationsplattform zur innovativen Blockchain-Technologie. Aufgezeigt werden Anwendungsfälle, Vorteile, Nachteile, Kritische Betrachtungen, Ökonomische und Wirtschaftliche Auswirkungen sowie Chancen und Risiken für die Gesellschaft. Kryptowährungen sind nicht gleich Blockchain! Die Schöpfung virtueller Währungseinheiten (Kryptowährungen) erfolgt im Gegensatz zu den Währungen der Noten- und Geschäftsbanken über private Computernetzwerke. Eine Idee der nichtstaatlichen Ersatzwährung. (laut BaFin) Es handelt sich um höchst spekulative Vorgänge mit der Möglichkeit des Totalverlustes!