Jede Variable oder jeder Ausdruck hat seinen eigenen Datentyp, z. B. Deklaration
int some_variable;
gibt an, dass die Variable irgendeine_Variable vom Integer-Typ int. ist
Die Deklaration ermöglicht es Ihnen, eine Variable in das Programm einzuführen. Diese Variable hat einen Datentyp: Ganzzahl, Fließkomma, Zeichen im Fall von grundlegenden Datentypen oder benutzerdefinierten Typ (Datenstruktur, Klasse). Der Typ einer Variablen bestimmt den Satz von Operationen, die an der Variablen ausgeführt werden können. Die Deklaration einer Variablen bestimmt die Belegung des dafür benötigten Speicherbereichs. Sowie der Wert dieser Variablen, der aus Sicht des Computers eine Folge von Bits sein wird. Die Deklaration einer Variablen trägt auch den Namen, mit dem der Programmierer im Programmcode auf diese Variable verweist.
Im obigen Beispiel haben wir eine Variable vom Typ Basis Integer, mit der Rechenoperationen, Vergleiche, Zuweisungen etc. durchgeführt werden können. Wir werden diese Variable im Programmcode mit dem Namen irgendeine_Variable bezeichnen.**
Grundlegende Datentypen
C++ bietet die folgenden grundlegenden Datentypen.
Leere
void ist ein Datentyp mit einem leeren Wertesatz. Es ist in Arbeit und kann nicht für Objekte und Variablen festgelegt werden. Es ist jedoch erlaubt, void-Zeiger zu verwenden sowie void als Rückgabewert von Funktionen zu verwenden.
nullptr
nullptr ist ein spezieller Datentyp, der per se kein Typ ist, da er nicht als Variablentyp gesetzt werden kann, aber als Nullzeiger verwendet werden kann. Dieser Typ wurde in den C++11-Standard eingeführt anstelle der implementierungsdefinierten Null-Makrokonstante NULL.
boolesch
bool ist ein boolescher Datentyp, der den Wert true oder false annehmen kann. Die Speichermenge, die dieser Datentyp belegt, kann je nach Implementierung im Zielsystem von 1 abweichen. Sie können die Größe mit dem Operator sizeof(bool). bestimmen.
Zeichentypen
char - Zeichentypen werden verwendet, um Textzeichen darzustellen. Die Größe des Zeichentyps char beträgt 1 Byte, wodurch 256 verschiedene Zeichen enthalten sein können. Eine Darstellung aller Zeichen finden Sie in der ASCII-Zeichentabelle.
Zeichendatentypen werden in drei Typen unterteilt:
- signiertes Zeichen - signierter Typ
- unsigned char - vorzeichenloser Typ
- char ist ein separater Typ, der entweder signiert oder unsigniert sein kann, je nachdem, wie der Compiler den Code verarbeitet.
Der Unterschied liegt im Wertebereich, zum Beispiel:
- Zeichen -128...127
- Zeichen ohne Vorzeichen 0...255
char kann verwendet werden, um Integer-Werte zu speichern, die ein Byte nicht überschreiten, aber es ist besser, den Int-Typ für Integer-Werte zu verwenden. Dies ist jedoch für eingebettete Systeme mit einer harten Einschränkung akzeptabel Menge an Speicher.
Es gibt auch spezielle Arten von Zeichendaten:
- wchar_t ist ein Typ zur Darstellung von Zeichen, die kein einziges Byte haben. Dies kann 32 Bit für Betriebssysteme sein, die UNICODE unterstützen, oder 16 Bit für die Windows-Notation für UTF-16.
- char16_t - Typ zur Darstellung von UTF-16, eingeführt im C++11 -Standard.
- char32_t - Typ zur Darstellung von UTF-32, eingeführt im C++11 -Standard.
int
int - ganzzahliger Datentyp. Modifikatoren können verwendet werden, um die für diesen Datentyp zugewiesene Speichermenge zu bestimmen. Wenn keine Modifikatoren vorhanden sind, ist garantiert, dass die Größe des Datentyps mindestens 16 Bit beträgt. Auf den meisten 32/64-Bit-Systemen ist jedoch garantiert, dass der Footprint mindestens 32 Bit beträgt.
Modifikatoren
Vorzeichenmodifikatoren
- signed - Darstellung des signierten Datentyps (wenn weggelassen, wird er standardmäßig angenommen)
- unsigned - Darstellung eines vorzeichenlosen Datentyps.
Größenmodifikatoren
- kurz - Der Zieltyp ist auf eine Größe von mindestens 16 Bit optimiert
- lang - Der Zieltyp ist für eine Größe von mindestens 32 Bit optimiert
Der Modifikator long kann zweimal auf den Datentyp angewendet werden, was zu einer Optimierung des Variablenspeicherplatzes von mindestens 64 Bit führt. Diese Optimierung wurde im C++11-Standard eingeführt.
lang lang int
Größen- und Vorzeichenmodifikatoren können auch kombiniert werden.
signiert lang lang int
Fließkommadatentypen
- float - 32-Bit-Gleitkommadatentyp.
- double - 64-Bit-Gleitkommadatentyp.
- long double - erweiterter Gleitkommadatentyp, eingeführt im C++11-Standard.
Bei der Softwareentwicklung merkt man übrigens anhand dieser Datentypen, welcher Entwickler mit reinem C und welcher mit C++ angefangen hat. Die allgemeine Verwendung von float ist typisch für Entwickler, die mit C begonnen haben, double ist typisch für C++-Entwickler.
Variablen
Variablen können also beispielsweise die oben aufgeführten Datentypen haben:
int a = 12; // Целочисленный тип, переменная равна 12 double b = 12.25; // Вещественный тип с плавающей точкой двойной точности, переменная равна 12.25 char c = 'a'; // Символьный тип, переменная равна символу "a"
Variablen können auf verschiedene Arten initialisiert werden.
double a1 = 2.3; double a2 = {2.3}; double a3 {2.3};
Die Klammerinitialisierung wurde im C++11-Standard eingeführt. Die Initialisierung mit geschweiften Klammern erlaubt keine implizite Konvertierung, daher gibt der Compiler in den folgenden Fällen einen Fehler aus.
int d1 = {2.3}; int d2 {2.3};
automatisch
Um Variablen im C++11-Standard zu deklarieren, wurde außerdem der Bezeichner auto eingeführt, mit dem Sie eine Variable deklarieren können, ohne einen Typ anzugeben. In diesem Fall wird der Typ vom Initialisierer abgeleitet, dh der Wert, der der Variablen zugewiesen wird. Daher kann auto nicht ohne Initialisierer verwendet werden, d.h.
// Правильный, рабочий вариант auto a = 14; // Не правильный вариант, не скомпилируется auto b; b = 15;
Der Spezifizierer auto kann verwendet werden, um Lambda-Funktionen oder Variablen mit einer sehr komplexen Deklaration zu deklarieren, was zu einer Vereinfachung des Programmcodes führt.
Arithmetik
Sie können verschiedene arithmetische Operationen mit Variablen der Grundtypen durchführen:
x+y // сложение +x // унарный плюс x-y // вычитание -x // унарный минус x*y // умножение x/y // деление x%y // остаток от деления
Es ist auch möglich, Vergleichsoperationen zu verwenden:
x==y // равно x!=y // не равно x<y // меньше чем x>y // больше чем x<=y // меньше чем или равно x>=y // больше чем или равно
Neben arithmetischen und logischen Operationen bietet die C++-Funktionalität spezifischere Operationen:
x+=y // x = x+y ++x // increment: x = x+1 x−=y // x = x-y −−x // decrement: x = x-1 x∗=y // x =x*y x/=y // x = x/y x%=y // x = x%y
Переменная аuto доступна для использования в Qt?
Да, доступна. Только нужно использовать стандарт C++11, но насколько помню, Вы используете устаревшие стандарты C++, поэтому у вас вряд ли она будет работать.