Question

Que signifie le mot « littéral » signifie lorsqu'il est utilisé dans le contexte tels que les chaînes littérales et des valeurs littérales?

Quelle est la différence entre une valeur littérale et une valeur?

Était-ce utile?

La solution

Un littéral est "toute notation représentant une valeur du code source" ( wikipedia )

(Cela contraste avec les identificateurs , qui se référer à une valeur en mémoire.)

Exemples:

  • "hey" (une chaîne)
  • false (a boolean)
  • 3.14 (un nombre réel)
  • [1,2,3] (une liste de numéros)
  • (x) => x*x (fonction)
  • /^1?$|^(11+?)\1+$/ (une expression rationnelle)

Certaines choses qui ne sont pas littérales:

  • std::cout (un identificateur)
  • foo = 0; (présentation)
  • 1+2 (expression)

Autres conseils

Un littéral est une valeur qui a été codé en dur directement dans votre source.

Par exemple:

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

Certains littéraux peuvent avoir une syntaxe particulière, de sorte que vous savez quel type littéral est:

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

Ce qui les différencie des variables ou des ressources est que le compilateur peut les traiter comme des constantes ou effectuer certaines optimisations avec le code où ils sont utilisés, car il est certain qu'ils ne changeront pas.

Un littéral est une affectation à une valeur explicite, comme

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'

EDIT:. Comme l'a souligné, la cession elle-même n'a rien à voir avec la définition d'un littéral, j'utilisais affectation dans mon exemple, mais un littéral peut également être passé dans une méthode, etc

Un littéral est si l'on inclut la valeur dans le code source (par opposition à référencer une variable ou une constante). Par exemple:

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)

Si le littéral représente une certaine quantité, comme une constante physique, il est préférable de lui donner un nom au lieu d'écrire le même littéral partout où vous en avez besoin. De cette façon, lorsque vous lisez le code source, vous savez ce que le nombre signifie , qui est généralement plus importante que sa valeur (qui pourrait changer de toute façon).

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

En général, les seuls littéraux numériques que j'utilise (en plus pour initialiser des constantes comme ci-dessus) sont 0 ou 1, et parfois 2 si je saute tous les autres éléments dans une boucle. Si le signifie du nombre est plus important que sa réelle valeur (il est généralement), de son mieux pour le nommer.

Une valeur littérale est valeur, mais une valeur peut aussi être stockée dans une variable. Dans la déclaration

string str = "string literal";

il y a une variable de chaîne (str) et une chaîne littérale. Après l'instruction est exécutée ils ont tous deux la même valeur.

Sachez que dans de nombreuses langues la variable et la valeur littérale ne même pas nécessairement être du même type. Par exemple:

int a = 1.0;

La valeur littérale ci-dessus est d'un type à virgule flottante. La valeur sera sous la contrainte par le compilateur pour entrer dans la variable int.

Pour un autre exemple, dans la première ligne de code C ++ au-dessus du type d'un littéral chaîne n'est pas en fait le type de bibliothèque du tout string. Pour maintenir la compatibilité avec C, littéraux de chaîne en C ++ sont des tableaux ombles.

Exemple rapide:

int my_int_var = 723;

723 -. Ce jeu de caractères se réfère à un littéral valeur entière

my_int_var -. Ce jeu de caractères se réfère à une variable valeur entière

Un littéral est quand vous le mettez dans le code. Ainsi, une chaîne de caractères est

string s = "SomeText";

Ceci est par opposition à la construction de la chaîne, ou prendre en paramètre.

En général quand quelqu'un utilise comme indiqué dans la plupart des exemples dans d'autres messages du mot littéral qu'ils veulent dire la valeur est déchiffrable à partir du code (texte).

Une autre utilisation commune est pour les valeurs qui sont converties en valeurs immédiates de l'assemblage. Ce sont des valeurs qui sont insérées directement dans l'instruction de machine plutôt que d'exiger des charges du registre.

Je l'ai entendu littéraux de chaîne utilisées par hasard pour faire référence à ce que le C # spécification fait référence à des chaînes littérales comme mot pour mot. Une chaîne régulière littérale permet l'échappement de certains caractères (préfixé par a), comme \ t pour une tabulation. A est préfixé par @ et traité chaîne littérale mot à mot mot pour mot, \ n'a pas de signification particulière.

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

Un littéral est "représentation de code source de données".

littéraux sont abbréviation de valeurs dans certains types que le langage considère si important ou fondamental qu'il a consacré le sucre de syntaxe pour eux.

Exemple de types dont les valeurs sont souvent représentés par littéraux:

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

Certaines langues ont même pour la fonction types:

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

Un exemple de valeurs qui ne sont généralement pas représentées littéraux serait valeurs des types de classe:

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

Ici, la valeur Car("BMW", 5) dans le type Car est en effet noté de manière unique en utilisant une séquence de symboles, cependant, la valeur n'a pas été représenté en utilisant un raccourci dédié littérale, mais utilise à la place des mécanismes théoriques générale (détaillé) pour désigner les valeurs de tout type de classe.

membre

Le terme littéral est synonyme de termes valeur , par exemple , constante , et élément d'un type, mais porte un peu de sens supplémentaire qui nous dit qu'il ya un raccourci pour l'écrire.

Je me plais à penser littéraux comme les hiéroglyphes égyptiens, par opposition à enchaînant les caractères d'un alphabet afin d'exprimer un concept.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top