wake-up-neo.com

Was bedeutet das Wort "wörtlich"?

Was bedeutet das Wort "Literal", wenn es in einem Kontext verwendet wird, wie z. B. Literalzeichenfolgen und Literalwerte?

Was ist der Unterschied zwischen einem Literalwert und einem Wert?

64
prodev42

Ein Literal ist "eine beliebige Notation für , die einen Wert innerhalb des Quellcodes darstellt" ( wikipedia )

(Vergleichen Sie dies mit Bezeichnern , die auf einen Wert im Speicher verweisen .)

Beispiele:

  • "hey" (eine Zeichenfolge)
  • false (ein Boolescher Wert)
  • 3.14 (eine reelle Zahl)
  • [1,2,3] (eine Liste von Zahlen)
  • (x) => x*x (eine Funktion)
  • /^1?$|^(11+?)\1+$/ (ein regulärer Ausdruck)

Einige Dinge, die keine Literale sind:

  • std::cout (eine Kennung)
  • foo = 0; (eine Aussage)
  • 1+2 (ein Ausdruck)
108
Iraimbilanja

Ein Literal ist ein Wert, der direkt in Ihre Quelle hartcodiert wurde.

Zum Beispiel:

string x = "This is a literal";
int y = 2; // so is 2, but not y
int z = y + 4; // y and z are not literals, but 4 is
int a = 1 + 2; // 1 + 2 is not a literal (it is an expression), but 1 and 2 considered separately are literals

Einige Literale können eine spezielle Syntax haben, damit Sie wissen, um welche Art von Literal es sich handelt:

//The 'M' in 10000000M means this is a decimal value, rather than int or double.
var accountBalance = 10000000M; 

Sie unterscheiden sich von Variablen oder Ressourcen darin, dass der Compiler sie als Konstanten behandeln oder bestimmte Optimierungen mit Code ausführen kann, wenn sie verwendet werden, da sie sicher sind, dass sie sich nicht ändern.

68
Joel Coehoorn

Ein Literal ist eine Zuordnung zu einem expliziten Wert, z. B.

int i = 4;  // i is assigned the literal value of '4'
int j = i   // j is assigned the value of i.  Since i is a variable,  
            //it can change and is not a 'literal'

BEARBEITEN: Wie bereits erwähnt, hat die Zuweisung selbst nichts mit der Definition eines Literal zu tun, ich habe in meinem Beispiel die Zuweisung verwendet, aber ein Literal kann auch an eine Methode übergeben werden usw.

15
Ed S.

Ein Literal ist, wenn Sie den Wert in den Quellcode aufnehmen (anstatt auf eine Variable oder eine Konstante zu verweisen). Zum Beispiel:

int result = a + 5; // a is a variable with a value, 5 is a literal

string name = "Jeff Atwood"; // name is a variable initialized
                             // with the string literal, "Jeff Atwood"

int[] array = new int[] {1, 2, 3}; // C# has array literals (this is actually three
                                   // int literals within an array literal)

Wenn das Literal eine Menge darstellt, wie eine physische Konstante, ist es besser, ihm einen Namen zu geben, anstatt dasselbe Literal dort zu schreiben, wo Sie es benötigen. Auf diese Weise wissen Sie beim Lesen des Quellcodes, was die Zahl bedeutet , die normalerweise wichtiger ist als ihr Wert (der sich ohnehin ändern kann).

const int maxUsers = 100;
const double gravitationalAcceleration = 9.8;

Im Allgemeinen sind die einzigen numerischen Literale, die ich verwende (außer zum Initialisieren von Konstanten wie oben), 0 oder 1 und manchmal 2, wenn ich jedes andere Element in einer Schleife überspringe. Wenn die Bedeutung der Zahl wichtiger ist als ihr tatsächlicher Wert (normalerweise), ist es besser, sie zu nennen.

9
Matthew Crumley

Ein Literalwert ist ein -Wert, ein Wert kann jedoch auch in einer Variablen gespeichert werden. In der Aussage

string str = "string literal";

es gibt eine Stringvariable (str) und ein Stringliteral. Nachdem die Anweisung ausgeführt wurde, haben beide denselben Wert.

Beachten Sie, dass in vielen Sprachen die Variable und der Literalwert nicht unbedingt vom selben Typ sein müssen. Zum Beispiel:

int a = 1.0;

Der obige Literalwert ist ein Gleitkommatyp. Der Wert wird vom Compiler gezwungen, in die int-Variable zu passen.

In einem anderen Beispiel ist der Typ eines String-Literal in der ersten Zeile des C++ - Codes nicht wirklich der Bibliothekstyp string. Um die Abwärtskompatibilität mit C aufrechtzuerhalten, sind Zeichenfolgenliterale in C++ Zeichenarrays.

6
Bill the Lizard

Schnelles Beispiel:

int my_int_var = 723;

723 - Diese Zeichengruppe bezieht sich auf einen Literal Integer-Wert.

my_int_var - Diese Zeichengruppe bezieht sich auf einen variablen Ganzzahlwert.

4
mbeckish

Ein Literal ist, wenn Sie es in den Code einfügen. Ein String-Literal ist also 

string s = "SomeText";

Dies ist im Gegensatz dazu, die Zeichenfolge zu erstellen oder als Parameter zu übernehmen.

3
Anthony D

Wenn jemand das Wortliteral verwendet, bedeutet dies im Allgemeinen, dass der Wert aus dem Code (Text) entschlüsselt werden kann, wie in vielen Beispielen in anderen Beiträgen gezeigt.

Eine andere häufige Verwendung ist für Werte, die in Assembly in unmittelbare Werte umgewandelt werden. Dies sind Werte, die direkt in die Maschinenanweisung eingefügt werden, anstatt Register laden zu müssen.

2
SpaceghostAli

Ich habe gehört, dass String-Literale gelegentlich verwendet wurden, um auf das zu verweisen, was die C # -Spezifikation tatsächlich als wörtliche String-Literale bezeichnet. Ein reguläres Zeichenfolgenliteral ermöglicht das Escape-Zeichen bestimmter Zeichen (vorangestelltes a), wie\t für einen Tabulator. Ein wörtliches Stringliteral wird von @ vorangestellt und wörtlich verarbeitet,\hat keine besondere Bedeutung.

//regular
string regular = "\thello world";
//verbatim
string verbatim = @"C:\";
//the regular equivalent of this would be "C:\\"
1
Timothy Carter

Ein Literal ist "Quellcodedarstellung von Daten".

1
Koray Tugay

Literale sind eine Kurzschreibweise für Werte in bestimmten Typen, für die die Sprache so wichtig oder grundlegend ist, dass sie nur für sie Syntaxzucker vorgesehen hat.

Beispiel für Typen, deren Werte häufig durch Literale dargestellt werden: 

Boolean = { true, false }
Integer = { ..., -2, -1, 0, 1, 2, ... }
Character = { 'a', 'b', ... }
String = { "hello", "world", ... }

Einige Sprachen haben Literale sogar für Funktionstypen:

Integer -> Integer = { (x: Integer) => x + 2), (x: Integer) => x/2, ...}

Ein Beispiel für Werte, die normalerweise nicht mit Literalen dargestellt werden, sind Werte von Klassentypen:

Car(brand: String, seats: Integer) = { Car("BMW", 5), Car("Ferrari", 2), ...}

Hier wird der Wert Car("BMW", 5) im Typ Car zwar eindeutig mit einer Folge von Symbolen bezeichnet, der Wert wird jedoch nicht mit einem dedizierten Kurzschreibliteral dargestellt, sondern verwendet allgemeine (ausführliche) Beurteilungsmechanismen zur Bezeichnung von Werten eines beliebigen Klassentyps.

Der Begriff literal ist synonym mit den Begriffen value, instance, constant, member und element eines Typs, trägt jedoch ein Bit von Eine zusätzliche Bedeutung, die uns sagt, dass es eine Abkürzung für das Aufschreiben gibt.

Ich denke gerne an Literale als ägyptische Hieroglyphen, anstatt Buchstaben aus einem Alphabet zusammenzureihen, um ein Konzept auszudrücken. 

0
Mario Galic