Variablen in C ++
Eine C ++ - Variable bietet uns eine benannte Speicherfunktion. Es ermöglicht dem Programmierer, Daten nach Bedarf zu bearbeiten. Jede Variable hat einen Typ in C ++. Der Variablentyp hilft bei der Bestimmung der Größe und des Layouts der Speicherzuordnung der Variablen, des Wertebereichs, der in diesem Speicher gespeichert werden kann, und der Menge von Operationen, die darauf angewendet werden können.
In diesem C ++ - Tutorial lernen Sie:
- Variablen in C ++
- Grundlegende Variablentypen in C ++
- Regeln zum Deklarieren von Variablen in C ++
- C ++ Variable Datentypen
- Variablenname oder Bezeichner
- Const Qualifier in C ++
- Umfang der Variablen in C ++
- Variable Typkonvertierung
- Variablen registrieren
- Escape-Sequenzen
Grundlegende Variablentypen in C ++
Hier sind die Grundtypen von C ++ - Variablen:
Int:
Eine Ganzzahl ist ein numerisches Literal (mit Zahlen verknüpft) ohne gebrochenen oder exponentiellen Teil. Beispiel. 120, -90 usw.
Doppelt:
Es ist ein Gleitkommawert mit doppelter Genauigkeit. Beispiel: 11.22, 2.345
Verkohlen:
Ein Zeichenliteral wird erstellt, indem ein einzelnes Zeichen in einfache Anführungszeichen eingeschlossen wird. Zum Beispiel: 'a', 'm', 'F', 'P', '}' usw.
Schweben:
Ein Gleitkomma-Literal ist ein numerisches Literal, das entweder eine Bruchform oder eine Exponentenform hat. Zum Beispiel: 1.3, 2.6
String Literals:
Ein Zeichenfolgenliteral ist eine Folge von Zeichen, die in doppelte Anführungszeichen eingeschlossen sind. Zum Beispiel: "Wie geht es dir?"
Bool:
Es enthält den Booleschen Wert true oder false.
Regeln zum Deklarieren von Variablen in C ++
Hier sind einige allgemeine Regeln für die Benennung einer Variablen:
- Ein C ++ - Variablenname kann nur Alphabete, Zahlen und Unterstriche enthalten.
- Ein C ++ - Variablenname kann nicht mit einer Zahl beginnen.
- Variablennamen sollten nicht mit einem Großbuchstaben beginnen.
- Ein in C ++ verwendeter Variablenname kann kein Schlüsselwort sein. Beispielsweise ist int ein Schlüsselwort, mit dem Ganzzahlen bezeichnet werden.
- Ein C ++ - Variablenname kann mit einem Unterstrich beginnen. Dies wird jedoch nicht als bewährte Methode angesehen.
C ++ Variable Datentypen
C ++ definiert eine ganze Reihe primitiver Typen
Dem Void- Typ sind keine Werte zugeordnet, und er kann nur unter wenigen Umständen verwendet werden. Dies ist am häufigsten der Rückgabetyp von Funktionen, die keinen Wert zurückgeben.
Die arithmetischen Typen umfassen Zeichen, Ganzzahlen, Boolesche Werte und Gleitkommazahlen. Arithmetischer Typ, wenn weiter in 2 Kategorien unterteilt
- Gleitkommatypen . Der Gleitkommawert (oder Gleitkommatyp) steht für Dezimalzahlen. Der IEEE-Standard gibt eine Mindestanzahl signifikanter Ziffern an. Die meisten Compiler bieten normalerweise mehr Präzision als das angegebene Minimum. In der Regel werden Floats durch 32 Bit, Double in 64 Bit und Long Double in 96 oder 128 Bit dargestellt.
- Integrale Typen (einschließlich Zeichen-, Ganzzahl- und Boolescher Typen). Der Boolesche Typ hat nur zwei Arten von Werten: Richtig oder Falsch. Es gibt verschiedene Zeichentypen , von denen die meisten zur Unterstützung der Internationalisierung existieren. Der grundlegendste Zeichentyp ist char. Ein Zeichen hat die gleiche Größe wie ein einzelnes Maschinenbyte, was ein einzelnes Byte bedeutet.
Die Integraltypen können signiert oder nicht signiert sein.
Vorzeichenbehafteter Typ : Sie stehen für negative oder positive Zahlen (einschließlich Null). Bei einem vorzeichenbehafteten Typ muss der Bereich gleichmäßig zwischen + ve und -ve Werten aufgeteilt werden. Somit enthält ein vorzeichenbehaftetes 8-Bit-Zeichen Werte von -127 bis 127.
Typ ohne Vorzeichen: In einem Typ ohne Vorzeichen sind alle Werte> = 0. Ein 8-Bit-Zeichen ohne Vorzeichen kann 0 bis 255 enthalten (beide einschließlich).
Variablenname oder Bezeichner
Bezeichner können aus einigen Buchstaben, Ziffern und dem Unterstrich oder einer Kombination davon bestehen. Die Namenslänge ist unbegrenzt.
Kennungen müssen
- Beginnen Sie entweder mit einem Buchstaben oder einem Unterstrich ('_').
- Und unterscheiden zwischen Groß- und Kleinschreibung; Groß- und Kleinbuchstaben sind unterschiedlich:
// definiert vier verschiedene int-Variablen
int guru99, gurU99, GuRu99, GURU99;
Die C ++ - Sprache hat einige Namen für ihre Verwendung reserviert.
Es gibt viele akzeptierte Konventionen zum Benennen von Variablen in verschiedenen Programmiersprachen. Das Befolgen dieser Konventionen kann die Lesbarkeit des Programms verbessern.
- Ein Bezeichner sollte zumindest einen Hinweis auf seine Bedeutung geben.
- Variablennamen sind normalerweise Kleinbuchstaben-guru99, nicht Guru99 oder GURU99.
- Die Klassen, die wir definieren, beginnen normalerweise mit einem Großbuchstaben.
- Bezeichner, die mehrere Wörter enthalten, sollten jedes Wort visuell unterscheiden. Zum Beispiel guru99_website nicht guru99website.
C ++ - Variablendeklaration und -definition
Eine Deklaration einer Variablen macht dem Programm einen Namen in dem Bereich bekannt, in dem sie definiert ist. Beispiel:
int a=5;int b;char c='A';
int a,b;a=b=1000;
List initializationint a(5);int b{5};
Const Qualifier in C ++
Angenommen, es gibt eine variable Buffsize, die die Anzahl der Eingaben angibt, die vom Benutzer übernommen werden sollen. Hier möchten wir den Wert von Buffsize nicht im gesamten Programm ändern. Wir möchten eine Variable definieren, deren Wert sich nicht ändern sollte.
Verwenden Sie in diesem Fall das Schlüsselwort const
const int bufSize = 512; // input buffer size
Dies definiert bufSize als Konstante. Jeder Versuch, bufSize zuzuweisen oder zu ändern, führt zu einem Fehler.
Hier können wir den Wert eines const-Objekts nach dem Erstellen nicht ändern. Es muss obligatorisch deklariert und initialisiert werden. Andernfalls gibt der Compiler einen Fehler aus.
const int i = get_size(); // ok: initialized at run timeconst int j = 42; // ok: initialized at compile timeconst int k; // error: k is uninitialized constint i = 42;const int ci = i; // ok: the value in i is copied into ci
Umfang der Variablen in C ++
Ein Bereich ist ein Bereich eines Programms, in dem eine Variable eine Bedeutung hat. Meistens kann der gleiche Name verwendet werden, um auf verschiedene Entitäten in verschiedenen Bereichen zu verweisen. Variablen sind von dem Punkt an, an dem sie deklariert werden, bis zum Ende des Bereichs sichtbar, in dem ihre Deklaration erscheint.
#includeint main(){int sum = 0;// sum values from 1 through 10 inclusivefor (int val = 1; val <= 10; ++val)sum += val; // equivalent to sum = sum + valcout << "Sum of 1 to 10 inclusive is "<< sum < Dieses Programm definiert 3 Namen, nämlich main, sum und val. Es verwendet den Namespace-Namen std zusammen mit zwei anderen Namen aus diesem Namespace-cout und endl.
- Der Funktionsname "main" wird außerhalb der geschweiften Klammern definiert. Der Funktionsname main hat - wie die meisten anderen Namen, die außerhalb einer Funktion definiert sind - einen globalen Gültigkeitsbereich. Dies bedeutet, dass nach der Deklaration Namen, die sich im globalen Bereich befinden, im gesamten Programm zugänglich sind.
- Die variable Summe wird im Rahmen des Blocks definiert, der den Hauptteil der Hauptfunktion darstellt. Der Zugriff erfolgt von seinem Deklarationspunkt und im gesamten Rest des Hauptfunktionskörpers. Allerdings nicht außerhalb davon. Dies bedeutet, dass die variable Summe einen Blockbereich hat .
- Die Variable val wird im Bereich "for-Anweisung" definiert. Es kann leicht in dieser Anweisung verwendet werden, jedoch nicht an anderer Stelle in der Hauptfunktion. Es hat lokalen Geltungsbereich .
Verschachtelter Bereich
Der Bereich kann andere Bereiche enthalten. Der enthaltene (oder verschachtelte) Bereich wird als innerer Bereich bezeichnet. Der enthaltende Bereich ist der äußere Bereich.
#includeusing namespace std;// Program for illustration purposes only: It is bad style for a function// to use a global variable and also define a local variable with the same nameint reused = 42; // reused has global scopeint main(){int unique = 0; // unique has block scope// output #1: uses global reused; prints 42 0cout << reused << " " << unique << endl;int reused = 0; // new, local object named reused hides global reused// output #2: uses local reused; prints 0 0cout << reused << " " << unique << endl;// output #3: explicitly requests the global reused; prints 42 0cout << ::reused << " " << unique << endl;return 0;} Ausgabe 1 wird vor der lokalen Definition von wiederverwendet angezeigt. Somit ist diese Ausgabe
Die Anweisung verwendet den wiederverwendeten Namen, der im globalen Bereich definiert ist. Diese Anweisung wird ausgegeben
42 0
Ausgabe 2 erfolgt nach der lokalen Definition von wiederverwendet. Es ist jetzt im Geltungsbereich. Daher verwendet diese zweite Ausgabeanweisung einfach das lokale Objekt mit dem Namen "Wiederverwendet" anstelle des globalen Objekts und gibt es aus
0 0
Ausgabe 3 überschreibt die Standard-Gültigkeitsbereichsregeln mithilfe des Bereichsoperators. Der globale Bereich hat keinen Namen. Wenn also der Scope-Operator (: :) eine leere linke Seite hat. Es interpretiert es als eine Anforderung, den Namen auf der rechten Seite des globalen Bereichs abzurufen. Daher verwendet der Ausdruck die global wiederverwendeten und ausgegebenen Daten
42 0
Variable Typkonvertierung
Eine Variable eines Typs kann in einen anderen konvertiert werden. Es ist als "Typkonvertierung" bekannt. Sehen wir uns die Regeln zum Konvertieren verschiedener C ++ - Variablentypen an:
Das Zuweisen von Nicht-Bool zu einer Bool-Variablen ergibt false, wenn der Wert 0 ist, andernfalls true.
bool b = 42; // b is trueDas Zuweisen eines Bools zu einem der anderen arithmetischen Typen ergibt 1, wenn der Bool wahr ist, und 0, wenn der Bool falsch ist.
bool b = true;int i = b; // i has value 1Wenn Sie einer Variablen vom Typ int einen Gleitkommawert zuweisen, erhalten Sie den Wert, der abgeschnitten wird. Der gespeicherte Wert ist der Teil vor dem Dezimalpunkt.
int i = 3.14; // i has value 3Das Zuweisen eines int-Werts zu einer Variablen vom Typ float führt dazu, dass der Bruchteil Null wird. Die Genauigkeit geht normalerweise verloren, wenn die Ganzzahl mehr Bits enthält, als die schwebende Variable aufnehmen kann.
Int i=3;double pi = i; // pi has value 3.0Wenn wir versuchen, einer Variablen vom Typ ohne Vorzeichen einen Wert außerhalb des Bereichs zuzuweisen, ist das Ergebnis der Rest des Werts% (modulo).
Beispielsweise kann ein vorzeichenloser 8-Bit-Zeichentyp Werte von 0 bis einschließlich 255 enthalten. Das Zuweisen eines Werts außerhalb dieses Bereichs führt dazu, dass der Compiler den Rest dieses Wertes Modulo 256 zuweist. Daher gibt die Zuweisung von -1 zu einem 8-Bit-Zeichen ohne Vorzeichen diesem Objekt nach der obigen Logik den Wert 255.
unsigned char c = -1; // assuming 8-bit chars, c has value 255Wenn wir versuchen, einem Objekt vom Typ mit Vorzeichen einen Wert außerhalb des Bereichs zuzuweisen, ist das Ergebnis unvorhersehbar. Es ist undefiniert. Das Programm scheint von außen zu funktionieren, es stürzt ab oder es entstehen Müllwerte.
signed char c2 = 256; // assuming 8-bit chars, the value of c2 is undefinedDer Compiler wendet denselben Konvertierungstyp an, wenn wir einen Wert eines Typs verwenden, bei dem ein Wert eines anderen Typs erwartet wird.
int i = 42;if (i) // condition will evaluate as truei = 0;Wenn dieser Wert = 0 ist, ist die Bedingung falsch. Alle anderen Werte (ungleich Null) ergeben true. Wenn wir ein Bool in einem arithmetischen Ausdruck verwenden, wird sein Wert nach demselben Konzept immer in 0 oder 1 konvertiert. Daher ist die Verwendung eines Bools in einem arithmetischen Ausdruck normalerweise fast sicher falsch.
Achtung: Mischen Sie keine signierten und nicht signierten Typen
Ausdrücke, die vorzeichenbehaftete und vorzeichenlose mischen, können überraschende und falsche Ergebnisse liefern, wenn der vorzeichenbehaftete Wert negativ ist. Wie oben erläutert, werden vorzeichenbehaftete Werte automatisch in vorzeichenlose Werte konvertiert.
Zum Beispiel in einem arithmetischen Ausdruck wie
x* yWenn x -1 und y 1 ist und wenn sowohl x als auch y int sind, ist der Wert erwartungsgemäß -1.
Wenn x int ist und y vorzeichenlos ist, hängt der Wert dieses Ausdrucks davon ab, wie viele Bits eine Ganzzahl auf der Kompilierungsmaschine hat. Auf unserer Maschine ergibt dieser Ausdruck 4294967295.
Variablen registrieren
Der Zugriff auf Registervariablen ist im Vergleich zu Speichervariablen schneller. Daher können Variablen, die häufig in einem C ++ - Programm verwendet werden, mithilfe des Schlüsselworts register in Register eingetragen werden . Das Schlüsselwort register weist den Compiler an, die angegebene Variable in einem Register zu speichern. Der Compiler hat die Wahl, ob er es in ein Register einfügt oder nicht. Im Allgemeinen führen Compiler selbst verschiedene Optimierungen durch, einschließlich des Einfügens einiger Variablen in das Register. Die Anzahl der Registervariablen in einem C ++ - Programm ist unbegrenzt. Der Compiler speichert die Variable jedoch möglicherweise nicht in einem Register. Dies liegt daran, dass der Registerspeicher sehr begrenzt ist und am häufigsten vom Betriebssystem verwendet wird.
Definieren:
register int i;Bemerkungen
Kommentare sind die Teile des Codes, die vom Compiler ignoriert werden. Es ermöglicht dem Programmierer, Notizen in den relevanten Bereichen des Quellcodes / Programms zu machen. Kommentare kommen entweder in Blockform oder in einzelnen Zeilen. Die Programmkommentare sind erklärende Aussagen. Es kann in den C ++ - Code aufgenommen werden, der jedem hilft, seinen Quellcode zu lesen. Alle Programmiersprachen erlauben irgendeine Form von Kommentaren. C ++ unterstützt sowohl einzeilige als auch mehrzeilige Kommentare.
- Einzeilige Kommentare beginnen mit // und dauern bis zum Ende der Zeile. Wenn das letzte Zeichen in einer Kommentarzeile ein \ ist, wird der Kommentar in der nächsten Zeile fortgesetzt.
- Mehrzeilige Kommentare beginnen mit / * und enden mit * /.
/* This is a comment *//* C++ comments can also* span multiple lines*/Escape-Sequenzen
Einige Zeichen, wie z. B. Rücktaste und Steuerzeichen, haben kein sichtbares Bild. Solche Zeichen werden als nicht druckbare Zeichen bezeichnet. Andere Zeichen (einfache und doppelte Anführungszeichen, Fragezeichen und Backslash) haben in den vielen Programmiersprachen eine besondere Bedeutung.
Unsere Programme können keines dieser Zeichen direkt verwenden. Stattdessen können wir eine Escape-Sequenz verwenden, um ein solches Zeichen darzustellen. Eine Escape-Sequenz beginnt mit einem Backslash.
Die Programmiersprache C ++ definiert mehrere Escape-Sequenzen:
Was tut es?
Charakter
Neue Zeile
\ n
Vertikale Registerkarte
\ v
Backslash
\\
Wagenrücklauf
\ r
Horizontale Registerkarte
\ t
Rücktaste
\ b
Fragezeichen
\?
Formfeed
\ f
Alarm (Glocke)
\ein
Doppeltes Zitat
""
Einfaches Zitat
\ '
Wir verwenden eine Escape-Sequenz, als wäre es ein einzelnes Zeichen:
cout << '\n'; // prints a newlinecout << "\tguru99!\n"; // prints a tab followed by "guru99!" and a newlineWir können auch verallgemeinerte Escape-Sequenzen \ x schreiben, gefolgt von einer oder mehreren hexadezimalen Ziffern. Oder wir verwenden ein \ gefolgt von einer, zwei oder drei oktalen Ziffern. Die verallgemeinerte Escape-Sequenz repräsentiert den numerischen Wert des Zeichens. Einige Beispiele (unter der Annahme des Latin-1-Zeichensatzes):
\7 (bell) \12 (newline) \40 (blank)\0 (null) \115 ('M') \x4d ('M')Wir können vordefinierte Escape-Sequenzen verwenden, wie wir jedes andere Zeichen verwenden.
cout << "Hi \x4dO\115!\n"; // prints Hi MOM! followed by a newlinecout << '\115' << '\n'; // prints M followed by a newlineZusammenfassung
- Eine C ++ - Variable bietet uns eine benannte Speicherfunktion.
- C ++ - Variablentypen: int, double, char, float, string, bool usw.
- Der enthaltene (oder verschachtelte) Bereich wird als innerer Bereich bezeichnet, und der enthaltende Bereich ist der äußere Bereich.
- Eine Variable eines Typs kann in einen anderen konvertiert werden. Es ist als "Typkonvertierung" bekannt.
- Der Zugriff auf Registervariablen ist im Vergleich zu Speichervariablen schneller.
- Kommentare sind die Teile des Codes, die vom Compiler ignoriert werden.
- Einige Zeichen, wie z. B. Rücktaste und Steuerzeichen, haben kein sichtbares Bild.