Tokens in C/C++ verstehen

Tokens in C/C++ verstehen

Einführung

Haben Sie sich jemals gefragt, wie ein Compiler unterscheidet, wenn int verwendet wird, um eine Variable zu deklarieren oder eine Variable benannt wird?

Wir alle haben irgendwann verwendet, um eine Variable mit einem ganzzahligen Wert zu deklarieren. Aber haben Sie sich jemals gefragt, wie der Compiler erkennt, dass für diesen speziellen Zweck verwendet wird? Dies liegt daran, dass der Compiler dieses Wort als ein spezielles reserviertes Wort – ein Schlüsselwort – erkennt.

Schlüsselwörter fallen in die Kategorie der kleinsten Elemente eines Programms, die für den Compiler von Bedeutung sind. Diese Elemente werden Token genannt.


Was sind Token?

Wie jedes andere komplexe Ding auf der Welt wird jedes Programm, das wir schreiben, aus den kleinsten und grundlegendsten Elementen aufgebaut. Das kleinste Element eines Programms, das für den Compiler von Bedeutung ist, wird als Token bezeichnet.

Egal, welche Programmiersprache Sie verwenden, jede hat ihre eigenen vordefinierten Token. In diesem Artikel konzentrieren wir uns hauptsächlich auf das Verständnis der Token in C/C++. Obwohl die beiden ähnliche Typen von Token haben, hat die Sprache C++ zwei zusätzliche Typen.

Wir haben die folgenden Arten von Token in C/C++-Programmiersprachen:

(Beachten Sie, dass „Ja“ anzeigt, dass das angegebene Token als Token für eine bestimmte Sprache betrachtet wird.)

Token C C++
Schlüsselwort Ja Ja
Kennung Ja Ja
Konstante Ja Nein
Numerische, boolesche und Zeigerliterale Nein Ja
String- und Zeichenliterale Ja Ja
Benutzerdefinierte Literale Nein Ja
Interpunktionszeichen Ja Ja

In den folgenden Abschnitten werden wir jeden dieser Token zusammen mit ihren Beispielen im Detail besprechen.

Schlüsselwörter

Sehen Sie sich den unten angegebenen einfachen C++-Code an, um zwei Zahlen zu addieren.

int main()
{
    int x, y, sum;

    //taking the value of the two numbers
    cout << "Enter the two integers you want to add: ";
    cin >> x >> y;

    // storing the sum of two integers in sum
    sum = x + y;

    // prints sum 
    cout << x << " + " <<  y << " = " << sum;     

    return 0;
}

Ausgabe:

Enter the two integers you want to add: 3
2
3 + 2 = 9

Wenn wir den Kodex beobachten, können wir bestimmte Wörter identifizieren, die herkömmlicherweise sehr häufig in unseren Kodizes verwendet werden. Das Wort und sind zwei solche Wörter. Diese werden in C/C++ als Schlüsselwörter bezeichnet. Schlüsselwörter sind vordefinierte reservierte Wörter, die für den Compiler eine besondere Bedeutung haben. Diese können nicht als Identifikatoren verwendet werden.

Einige der reservierten Schlüsselwörter in C/C++ sind unten aufgeführt.

automatisch Pause Fall
Zurück int Zeichen
bool privat öffentlich
geschützt falsch wahr
wenn oder sonst
schwimmen während neu

Die vollständige Liste der Schlüsselwörter finden Sie unter Schlüsselwörter (C++) und C-Schlüsselwörter.

Identifikatoren

Bezeichner sind Symbole oder Wörter, die man den Variablen, Funktionen, Typen, Klassen, Objekten und anderen solchen Komponenten des eigenen Codes zuweist. Wenn wir uns das Programm zum Addieren von zwei Zahlen in C++ noch einmal ansehen, stellen wir fest, dass wir zum Identifizieren des Werts der ersten Zahl den Bezeichner 'x' verwenden, für die zweite Zahl 'y' und für die Summe der beiden, wir verwenden 'sum'.

Es gibt einige Regeln, die bei der Verwendung von Bezeichnern als Token in C/C++ befolgt werden müssen, diese sind wie folgt:

  • Schlüsselwörter können nicht als Identifikatoren verwendet werden. Identifikatoren, die jedoch enthalten ein Schlüsselwort sind legal. Beispielsweise ist „Tint“ ein gültiger Bezeichner, „int“ jedoch nicht.
  • Bezeichner unterscheiden zwischen Groß- und Kleinschreibung. Somit entspricht „FileName“ einer anderen Speicheradresse als „FileName“.
  • Das erste Zeichen eines Bezeichners muss ein alphabetisches Zeichen sein, entweder Groß- oder Kleinbuchstabe, oder ein Unterstrich ( _ ). Daher ist „2numbers“ eine illegale Kennung.

Jede Kennung hat einen Gültigkeitsbereich oder eine Sichtbarkeit. Dieser Geltungsbereich ist der Bereich des Programms, in dem auf diese Kennung zugegriffen werden kann. Es kann (in der Reihenfolge zunehmender Einschränkung) auf die Datei, Funktion, den Block oder den Funktionsprototyp beschränkt sein, in dem es erscheint.

Konstant

Eine Konstante ist ein Token in C, das einer Zahl, einem Zeichen oder einer Zeichenfolge entspricht, die als Wert in einem Programm verwendet werden kann. Jede Konstante hat einen Typ und einen Wert, auf dessen Grundlage Konstanten in die folgenden Typen eingeteilt werden:

  • Gleitkommakonstanten : Es ist eine Dezimalzahl, die eine vorzeichenbehaftete reelle Zahl darstellt. Die Darstellung einer vorzeichenbehafteten reellen Zahl enthält einen ganzzahligen Teil, einen Bruchteil und einen Exponenten.
  • Ganzzahlkonstanten: Es ist eine dezimale (Basis 10), oktale (Basis 8) oder hexadezimale (Basis 16) Zahl, die einen ganzzahligen Wert darstellt. Wir verwenden diese, um ganzzahlige Werte darzustellen, die nicht geändert werden können.
  • Zeichenkonstanten: Eine „Zeichenkonstante“ wird gebildet, indem ein einzelnes Zeichen aus dem darstellbaren Zeichensatz in einfache Anführungszeichen (‘ ‘) gesetzt wird.
  • Aufzählungskonstanten: Die durch Aufzählungstypen definierten benannten ganzzahligen Bezeichner werden als Aufzählungskonstanten bezeichnet. Um mehr über die Aufzählung zu erfahren, möchten Sie vielleicht auf C-Aufzählungsdeklarationen verweisen.
//floating point constants
15.75
1.575E1   /* = 15.75   */
1575e-2   /* = 15.75   */
-2.5e-3   /* = -0.0025 */
25E-4     /* =  0.0025 */


//integer constants
28
0x1C   /* = Hexadecimal representation for decimal 28 */
034    /* = Octal representation for decimal 28 */


//character constants
char    schar =  'x';   /* A character constant          */
wchar_t wchar = L'x';   /* A wide-character constant for
                            the same character           */

Numerische, boolesche und Zeigerliterale

Die numerischen, booleschen und Zeigerliterale werden nur von C++ als Token betrachtet. Bevor wir zu den numerischen, booleschen und Zeigerliteralen springen, wollen wir den Begriff „Literale“ verstehen. Literale sind also die Token eines Programms, die direkt einen Wert darstellen.

Sehen Sie sich Folgendes an:

const int = 20;      // integer literal
double d = sin(107.87);     // floating point literal passed to sin func                          
bool b = false;              // boolean literal
TestClass* mc = nullptr;      // pointer literal

Die Werte 20, 107,87, false, nullptr sind direkt repräsentativ für ihre jeweiligen Konstanten. Es handelt sich also um Literale. Lassen Sie uns jede dieser Arten von Literalen besprechen.

Integer-Literal
Im obigen Beispiel ist der Ausdruck ein konstanter Ausdruck. Der Wert <20> ist das Integer-Literal. Jedes integrale Literal hat zwei Aspekte – Präfix und Suffix. Das Präfix des Integer-Literals gibt die Basis an, in der es gelesen werden soll, während das Suffix des Integer-Literals den Typ angibt, in dem es gelesen werden soll. Das folgende Beispiel wird es beim Studium von Tokens in c/c++ klarer machen.


12345678901234LL /* indicates a long long integer value 
                    because of the suffix LL */



0x10 = 16   /* the prefix 0x indicates the HexaDecimal base */

Boolesches Literal
Der Ausdruck „false“ ist das boolesche Literal. Dieses Literal wird verwendet, um die booleschen Datentypen darzustellen. Ein boolescher Wert kann nur zwei Werte haben – wahr und falsch.

Zeigerliteral
In dem Ausdruck wird „nullptr“ als Punktliteral bezeichnet. C++ führt das nullptr-Literal ein, um einen mit Null initialisierten Zeiger anzugeben.

Zeichen- und Zeichenfolgenliterale

Auch solche Token werden nur vom C++-Compiler erkannt. Ein Zeichenliteral speichert ein einzelnes Zeichen, das in einfache Anführungszeichen geschrieben wird. Nur ein einzelnes Zeichen kann durch ein Zeichenliteral dargestellt werden. Um mehrere Zeichen zu speichern, muss man Zeichenarrays verwenden.

Wenn wir ein Zeichenliteral verwenden, um mehrere Zeichen zu speichern, gibt der Compiler eine Warnung aus und speichert am Ende nur das letzte Zeichen des Literals.

Ein String-Literal ist auch einem Zeichenliteral ähnlich, außer dass es mehrere Zeichen darstellen kann, die in doppelte Anführungszeichen geschrieben werden. Es kann auch Sonderzeichen enthalten.

Hier ist ein Stück Code, der die beiden veranschaulicht.

int main()
{
    const string str = “Welcome to Coding Ninjas.”;
    cout << str;
    const char character = ‘x’;
    cout << character;
    return 0;
}

Ausgabe:

Welcome to Coding Ninjas.
x

Benutzerdefinierte Literale

Diese Art von Literalen wurde in C++ ab C++ 11 hinzugefügt. Wenn wir uns erinnern, kennen wir sechs Haupttypen von Literalen, nämlich Integer, Fließkomma, Boolean, String, Zeichen und Zeiger. Auf Basis dieser können wir auch eigene Literale definieren. Diese werden als UDLs oder benutzerdefinierte Literale bezeichnet.

UDLs werden benötigt, wenn die eingebauten Literale nicht ausreichen. Das folgende Beispiel hilft Ihnen beim Verständnis.

UDLs werden nur als Suffix unterstützt. Um dies besser zu verstehen, sehen Sie sich das folgende Beispiel an.

27h                // hours
3.6i                // imaginary

Das Präfix „h“ wird verwendet, um ein Stundenliteral zu definieren und 'i' wird verwendet, um ein imaginäres Zahlenliteral zu definieren . Daher helfen uns diese Literale jetzt, Werte in Stunden und imaginären Zahlen direkt darzustellen. Einzelheiten zu UDLs können Sie hier nachlesen.

Interpunktionszeichen

Interpunktionszeichen sind Token in C und C++, die für den Compiler semantisch und syntaktisch bedeutsam sind, deren Operationen jedoch vom Kontext abhängen. Einige Interpunktionszeichen können entweder allein oder in Kombination auch C++-Operatoren sein oder für den Präprozessor von Bedeutung sein. Im Folgenden finden Sie einige Beispiele für Satzzeichen.

! % ^ & * ( ) - + = { } | ~
[ ] \ ; ' : " < > ? , . / #

Häufig gestellte Fragen

Was sind die Tokens in C++?

Das kleinste Element eines Programms, das für den Compiler von Bedeutung ist, wird als Token bezeichnet. Einige der vom Compiler identifizierten Token in C++ sind Schlüsselwörter, Bezeichner, Interpunktionszeichen, Literale usw.

Ist ++ ein Token in C?

Ja, der Inkrementoperator ist ein unärer Operator, der in C++ als Token identifiziert wird

Was ist ein C-Token mit einem Beispiel?

Ein Token ist das kleinste Element, das für den Compiler von Bedeutung ist. Beispielsweise werden Schlüsselwörter wie und als Token betrachtet. Die in C identifizierten Token sind:

1. Schlüsselwörter
2. Kennungen
3. Streicher
4. Betreiber
5. Konstant
6. Sonderzeichen

Wie viele Arten von Token gibt es in C++?

Es gibt im Großen und Ganzen sieben Typen von Tokens in C++, und diese sind wie folgt:

1. Schlüsselwörter
2. Kennungen
3. Numerische, boolesche und Zeigerliterale
4. Zeichenfolgen- und Zeichenliterale
5. Benutzerdefinierte Literale
6. Betreiber
7. Satzzeichen

Schlüsselmitnahmen

Jedes Programm hat bestimmte Token, die die kleinsten Elemente sind, die für den Compiler von Bedeutung sind. In C/C++ haben wir Schlüsselwörter, Bezeichner, Konstanten, Literale und Interpunktionszeichen als Token. In diesem Artikel haben wir jede davon ausführlich besprochen, zusammen mit Beispielen.

Wir hoffen, dass dieser Blog über Tokens in c/c++ Ihnen mehr über das Konzept geholfen hat.

Von Khushi Sharma