Que signifie le mot "littérale"?

que signifie le mot "littéral" lorsqu'il est utilisé dans un contexte tel que les chaînes littérales et les valeurs littérales?

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

64
demandé sur Mario Galic 2009-01-27 23:38:41

12 réponses

Un littéral est "tout de notation pour les représentant une valeur dans le code source" ( wikipedia )

(cela Contraste avec la identificateurs , qui consultez à une valeur dans la mémoire.)

exemples:

  • "hey" (une chaîne de caractères)
  • false (un booléen)
  • 3.14 (un nombre réel)
  • [1,2,3] (une liste de numéros)
  • (x) => x*x (une fonction)
  • /^1?$|^(11+?)+$/ (regexp)

certaines choses qui ne sont pas littérales:

  • std::cout (un identificateur)
  • foo = 0; (une déclaration)
  • 1+2 (une expression)
95
répondu 2009-01-27 21:15:28

une valeur littérale est une valeur qui a été codée 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 spéciale, donc vous savez quel type le littéral est:

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

ce qui les distingue des variables ou des ressources, c'est que le compilateur peut les traiter comme des constantes ou effectuer certaines optimisations avec du code là où elles sont utilisées, parce qu'il est certain qu'elles ne changeront pas.

68
répondu Joel Coehoorn 2013-11-01 14:34:16

un littéral est une assignation à une valeur explicite, telle que

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 indiqué, l'assignation elle-même n'a rien à voir avec la définition d'un littéral, j'utilisais l'assignation dans mon exemple, mais un littéral peut aussi être passé dans une méthode, etc.

15
répondu Ed S. 2009-03-06 20:22:24

Dans la programmation, une valeur écrite exactement comme il est destiné à être interprété. En revanche, une variable est un nom qui peut représenter différentes valeurs pendant l'exécution du programme. Et une constante est un nom qui représente la même valeur tout au long d'un programme. Mais un littéral n'est pas un nom, c'est la valeur elle-même.

Un littéral peut être un nombre, un caractère ou une chaîne de caractères. Par exemple, dans l'expression

x = 3

x est une variable, et 3 est un littéral.

12
répondu kokabi 2014-09-16 06:44:53

Un littéral est lorsque vous incluez 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, quand vous lisez le code source, vous savez ce que le nombre signifie , qui est habituellement plus important que sa valeur (qui pourrait changer de toute façon).

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

en général, les seules littérales numériques que j'utilise (en plus d'initialiser les 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 valeur réelle valeur (il est habituellement), il est préférable de le nommer.

9
répondu Matthew Crumley 2009-01-27 21:05:36

une valeur littérale est une 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 string (str) et une chaîne literal. Après que l'instruction est exécutée ils ont tous les deux la même valeur.

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

int a = 1.0;

le la valeur littérale ci-dessus est un type de point flottant. La valeur sera forcée par le compilateur de s'adapter à la variable int.

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

6
répondu Bill the Lizard 2009-01-27 20:47:47

Rapide exemple:

int my_int_var = 723;

723 - cet ensemble de caractères se réfère à une valeur entière littérale .

my_int_var - cet ensemble de caractères renvoie à une valeur entière variable .

4
répondu mbeckish 2009-01-27 20:43:43

un littéral est quand vous le mettez dans le code. Donc une chaîne littérale est

string s = "SomeText";

c'est par opposition à construire la chaîne, ou la prendre comme paramètre.

3
répondu Anthony D 2009-01-27 20:42:15

généralement, lorsque quelqu'un utilise le mot littéral, cela signifie que la valeur est déchiffrable à partir du code (texte) comme indiqué dans de nombreux exemples dans d'autres postes.

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

2
répondu SpaceghostAli 2015-08-24 19:36:46

j'ai entendu des littérales de chaîne de caractères utilisées fortuitement pour faire référence à ce que la C# Spécification se réfère réellement comme littérales de chaîne de caractères verbatim. Une chaîne de caractères littérale permet d'échapper à certains caractères (préfixés par a ), comme \t pour un onglet. Une chaîne littérale mot à mot est préparée par @ et traitée mot à 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:\"
1
répondu Timothy Carter 2009-01-27 20:54:27

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

1
répondu Koray Tugay 2016-12-25 11:36:54

les littérales sont une notation en shorthand pour les valeurs dans certains types que la langue considère si important ou fondamental qu'il a dédié le sucre de syntaxe juste pour eux.

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

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

certaines langues ont littérales même pour les types de fonction:

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

Un exemple de valeurs qui ne sont généralement pas représentées à les 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 dénotée de façon unique en utilisant une séquence de symboles, cependant, la valeur n'est pas représentée en utilisant une abréviation dédiée littérale, mais utilise plutôt des mécanismes notionnels généraux (verbeux) pour dénoter des valeurs de n'importe quel type de classe.

le terme littéral est synonyme de termes valeur , instance , constante , membre , et élément d'un type, mais développe un peu plus ce qui signifie que nous dit il y a un raccourci pour l'écrire.

j'aime penser aux littérales comme des hiéroglyphes égyptiens plutôt que de relier les caractères d'un alphabet pour exprimer un concept.

0
répondu Mario Galic 2018-05-07 14:45:49