c# language-agnostic terminology glossary

c# - ¿Qué significa la palabra "literal"?



language-agnostic terminology (12)

¿Qué significa la palabra "literal" cuando se usa en contexto, como cadenas literales y valores literales?

¿Cuál es la diferencia entre un valor literal y un valor?


Ejemplo rápido:

int my_int_var = 723;

723 - Este conjunto de caracteres se refiere a un valor entero literal .

my_int_var - Este conjunto de caracteres se refiere a un valor entero variable .


En programación, un valor escrito exactamente como debe interpretarse. Por el contrario, una variable es un nombre que puede representar diferentes valores durante la ejecución del programa. Y una constante es un nombre que representa el mismo valor en un programa. Pero un literal no es un nombre, es el valor en sí mismo.

Un literal puede ser un número, un carácter o una cadena. Por ejemplo, en la expresión,

x = 3

x es una variable, y 3 es un literal.


Generalmente, cuando alguien usa la palabra literal, significa que el valor es descifrable del código (texto) como se muestra en muchos de los ejemplos en otras publicaciones.

Otro uso común es para los valores que se convierten a valores inmediatos en el ensamblaje. Estos son valores que se insertan directamente en la instrucción de la máquina en lugar de requerir cargas de registro.


He escuchado que los literales de cadenas se usan casualmente para referirse a lo que la especificación C # realmente se refiere como literales literales literales. Un literal de cadena regular permite el escape de ciertos caracteres (con el prefijo a), como / t para una pestaña. Un literal de cadena textual es precedido por @ y procesado textualmente, / no tiene un significado especial.

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


Los literales son una notación abreviada para valores en ciertos tipos que el lenguaje considera tan importantes o fundamentales que tiene azúcar de sintaxis dedicada solo para ellos.

Ejemplo de tipos cuyos valores a menudo están representados por literales:

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

Algunos lenguajes tienen literals incluso para tipos de funciones:

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

Un ejemplo de valores que generalmente no están representados con literales serían los valores de los tipos de clases:

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

Aquí, el valor Car("BMW", 5) en el tipo Car se denota de forma única utilizando una secuencia de símbolos, sin embargo, el valor no se representa utilizando un literal de taquigrafía dedicado, sino que utiliza mecanismos nocionales generales (detallados) para indicar valores de cualquier tipo de clase.

El término literal es sinónimo de valor de términos, instancia , constante , miembro y elemento de un tipo, pero tiene un significado adicional que nos dice que hay una forma abreviada de escribirlo.

Me gusta pensar en literales como jeroglíficos egipcios en lugar de engarzar caracteres de un alfabeto para expresar un concepto.


Un literal es "cualquier notación para representar un valor dentro del código fuente" ( wikipedia )

(Compare esto con los identificadores , que se refieren a un valor en la memoria).

Ejemplos:

  • "hey" (una cadena)
  • false (un booleano)
  • 3.14 (un número real)
  • [1,2,3] (una lista de números)
  • (x) => x*x (una función)
  • /^1?$|^(11+?)/1+$/ (a regexp)

Algunas cosas que no son literales:

  • std::cout (un identificador)
  • foo = 0; (una declaración)
  • 1+2 (una expresión)

Un literal es "representación de código fuente de datos".


Un literal es cuando lo pones en el código. Entonces, un literal de cadena es

string s = "SomeText";

Esto es como opuesto a construir la cadena, o tomarlo como un parámetro.


Un literal es cuando se incluye el valor en el código fuente (en lugar de hacer referencia a una variable o una constante). Por ejemplo:

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 el literal representa alguna cantidad, como una constante física, es mejor darle un nombre en lugar de escribir el mismo literal donde sea que lo necesite. De esta manera, cuando estás leyendo el código fuente, sabes lo que significa el número, que generalmente es más importante que su valor (que podría cambiar de todos modos).

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

En general, los únicos literales numéricos que uso (además de inicializar constantes como arriba) son 0 o 1, y a veces 2 si me salteo todos los demás elementos en un bucle. Si el significado del número es más importante que su valor real (generalmente lo es), es mejor nombrarlo.


Un literal es un valor que ha sido codificado directamente en su fuente.

Por ejemplo:

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

Algunos literales pueden tener una sintaxis especial, por lo que usted sabe de qué tipo es el literal:

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

Lo que los distingue de las variables o los recursos es que el compilador puede tratarlos como constantes o realizar ciertas optimizaciones con el código donde se usan, porque es seguro que no cambiarán.


Un literal es una asignación a un valor explícito, como

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''

EDITAR: Como se señaló, la asignación en sí no tiene nada que ver con la definición de literal, yo estaba usando la asignación en mi ejemplo, pero un literal también se puede pasar a un método, etc.


Un valor literal es un valor, pero un valor también se puede almacenar en una variable. En la declaración

string str = "string literal";

hay una variable de cadena (str) y una cadena literal. Después de que se ejecuta la declaración, ambos tienen el mismo valor.

Tenga en cuenta que en muchos idiomas, la variable y el valor literal no necesariamente tienen que ser del mismo tipo. Por ejemplo:

int a = 1.0;

El valor literal anterior es un tipo de coma flotante. El compilador forzará el valor para que se ajuste a la variable int.

Para otro ejemplo, en la primera línea de código C ++, el tipo de cadena literal no es realmente la string tipo de biblioteca. Para mantener la compatibilidad hacia atrás con C, los literales de cadena en C ++ son matrices de caracteres.