D Programmierung - Literale

Konstante Werte, die im Programm als Teil des Quellcodes eingegeben werden, werden aufgerufen literals.

Literale können von jedem der grundlegenden Datentypen sein und können in Ganzzahlen, Gleitkommazahlen, Zeichen, Zeichenfolgen und Boolesche Werte unterteilt werden.

Auch hier werden Literale wie reguläre Variablen behandelt, mit der Ausnahme, dass ihre Werte nach ihrer Definition nicht mehr geändert werden können.

Ganzzahlige Literale

Ein ganzzahliges Literal kann einen der folgenden Typen haben:

  • Decimal verwendet die normale Zahlenwiedergabe, wobei die erste Ziffer nicht 0 sein kann, da diese Ziffer für die Anzeige des Oktalsystems reserviert ist. Dies schließt 0 nicht alleine ein: 0 ist Null.

  • Octal verwendet 0 als Präfix für die Nummer.

  • Binary verwendet 0b oder 0B als Präfix.

  • Hexadecimal verwendet 0x oder 0X als Präfix.

Ein ganzzahliges Literal kann auch ein Suffix haben, das eine Kombination aus U und L für unsigned bzw. long ist. Das Suffix kann in Groß- oder Kleinbuchstaben und in beliebiger Reihenfolge angegeben werden.

Wenn Sie kein Suffix verwenden, wählt der Compiler selbst basierend auf der Größe des Werts zwischen int, uint, long und ulong.

Hier sind einige Beispiele für ganzzahlige Literale -

212         // Legal 
215u        // Legal 
0xFeeL      // Legal 
078         // Illegal: 8 is not an octal digit 
032UU       // Illegal: cannot repeat a suffix

Im Folgenden finden Sie weitere Beispiele für verschiedene Arten von Ganzzahlliteralen:

85         // decimal 
0213       // octal
0x4b       // hexadecimal 
30         // int 
30u        // unsigned int 
30l        // long 
30ul       // unsigned long 
0b001      // binary

Gleitkomma-Literale

Die Gleitkomma-Literale können entweder im Dezimalsystem wie in 1.568 oder im Hexadezimalsystem wie in 0x91.bc. angegeben werden.

Im Dezimalsystem kann ein Exponent durch Hinzufügen des Zeichens e oder E und einer Zahl danach dargestellt werden. Zum Beispiel bedeutet 2.3e4 "2,3 mal 10 hoch 4". Ein "+" - Zeichen kann vor dem Wert des Exponenten angegeben werden, hat jedoch keine Auswirkung. Zum Beispiel sind 2.3e4 und 2.3e + 4 gleich.

Das vor dem Wert des Exponenten hinzugefügte Zeichen "-" ändert die Bedeutung in "geteilt durch 10 hoch". Zum Beispiel bedeutet 2.3e-2 "2.3 geteilt durch 10 hoch 2".

Im Hexadezimalsystem beginnt der Wert entweder mit 0x oder 0X. Der Exponent wird durch p oder P anstelle von e oder E angegeben. Der Exponent bedeutet nicht "10 hoch der Potenz von", sondern "2 hoch der Potenz von". Zum Beispiel bedeutet P4 in 0xabc.defP4 "abc.de mal 2 hoch 4".

Hier einige Beispiele für Gleitkomma-Literale -

3.14159       // Legal 
314159E-5L    // Legal 
510E          // Illegal: incomplete exponent 
210f          // Illegal: no decimal or exponent 
.e55          // Illegal: missing integer or fraction 
0xabc.defP4   // Legal Hexa decimal with exponent 
0xabc.defe4   // Legal Hexa decimal without exponent.

Standardmäßig ist der Typ eines Gleitkomma-Literal doppelt. F und F bedeuten float und der L-Bezeichner bedeutet real.

Boolesche Literale

Es gibt zwei Boolesche Literale, die Teil der Standard-D-Schlüsselwörter sind.

  • Ein Wert von true wahr darstellen.

  • Ein Wert von false falsch darstellen.

Sie sollten den Wert von true nicht gleich 1 und den Wert false gleich 0 berücksichtigen.

Zeichenliterale

Zeichenliterale werden in einfache Anführungszeichen gesetzt.

Ein Zeichenliteral kann ein einfaches Zeichen (z. B. 'x'), eine Escape-Sequenz (z. B. '\ t'), ein ASCII-Zeichen (z. B. '\ x21'), ein Unicode-Zeichen (z. B. '\ u011e') oder sein als benanntes Zeichen (zB '\ ©', '\ ♥', '\ €').

Es gibt bestimmte Zeichen in D, denen ein umgekehrter Schrägstrich vorangestellt ist. Sie haben eine besondere Bedeutung und werden zur Darstellung wie Zeilenumbruch (\ n) oder Tabulator (\ t) verwendet. Hier haben Sie eine Liste einiger solcher Escape-Sequenzcodes -

Fluchtabfolge Bedeutung
\\ \ Zeichen
\ ' 'Charakter
"" "Charakter
\? ? Charakter
\ein Alarm oder Glocke
\ b Rücktaste
\ f Formularvorschub
\ n Neue Zeile
\ r Wagenrücklauf
\ t Horizontale Registerkarte
\ v Vertikale Registerkarte

Das folgende Beispiel zeigt einige Escape-Sequenzzeichen -

import std.stdio;
  
int main(string[] args) { 
   writefln("Hello\tWorld%c\n",'\x21'); 
   writefln("Have a good day%c",'\x21'); 
   return 0; 
}

Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:

Hello   World!

Have a good day!

String-Literale

String-Literale werden in doppelte Anführungszeichen gesetzt. Eine Zeichenfolge enthält Zeichen, die Zeichenliteralen ähnlich sind: einfache Zeichen, Escape-Sequenzen und universelle Zeichen.

Sie können eine lange Zeile mithilfe von Zeichenfolgenliteralen in mehrere Zeilen aufteilen und diese durch Leerzeichen trennen.

Hier sind einige Beispiele für String-Literale -

import std.stdio;

int main(string[] args) {
   writeln(q"MY_DELIMITER
      Hello World
      Have a good day
      MY_DELIMITER");

   writefln("Have a good day%c",'\x21'); 
   auto str = q{int value = 20; ++value;}; 
   writeln(str); 
}

Im obigen Beispiel finden Sie die Verwendung von q "MY_DELIMITER MY_DELIMITER" zur Darstellung mehrzeiliger Zeichen. Sie können auch q {} sehen, um eine D-Sprachanweisung selbst darzustellen.