2009-01-27 19 views

Respuesta

83

Un literal es "cualquier notación para representa un valor en el código fuente" (wikipedia)

(Contrasta esto con identificadores, que 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+$/ (una expresión regular)

Algunas cosas que no son literales:

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

upvote para la expresión regular literal –

+0

Lamentablemente no sé cómo se las arregla para determinar la excelencia. Acabo de copiarlo de alguna parte porque se veía genial –

+1

Ni siquiera sabía que eso era lo que hacía: solo pensé que mostrar una expresión regular en absoluto era una buena idea. –

14

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' 

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

+0

hehe, ¿alguien ha votado en contra? –

+0

sí, los literales no tienen nada que ver con la asignación;) –

+0

Es cierto, debería haber aclarado el hecho de que estaba usando una tarea para demostrar lo que es un literal. –

3

Un literal es cuando lo pones en el código. Por lo que una cadena literal es

string s = "SomeText"; 

Esto es lo más opuesto a la construcción de la cadena, o tomarlo como un parámetro.

64

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 saber qué tipo el literal es:

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

Lo que los diferencia de las variables o 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.

+5

¿Por qué se modificó esta votación? –

+6

Me encanta la forma en que lo acabas de explicar, en lugar de intentar mostrar cuánto sabes, lo que confunde a los novatos. Necesitamos más gente como tú. –

+1

Fácil y convincente. Gracias – Johnny

4

ejemplo rápida:

int my_int_var = 723;

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

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

6

un valor literal es un valor, pero un valor también se puede almacenar en un variable. En la instrucció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 del código C++, el tipo de cadena literal no es en realidad la biblioteca tipo string en absoluto. Para mantener la compatibilidad hacia atrás con C, los literales de cadena en C++ son matrices de caracteres.

1

He escuchado que los literales de cadena se usan casualmente para referirse a lo que el C# specification 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:\\" 
9

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 cierta cantidad, como una constante física, es mejor dar un nombre en lugar de escribir la misma literal de todo el mundo que lo necesite. De esta manera, cuando está leyendo el código fuente, sabe 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; 

Generalmente, los únicos literales numéricos I utilizan (además de para inicializar constantes como anteriormente) son 0 o 1, y, a veces 2 si yo estoy saltando cada otro artículo en un bucle. Si el que significa del número es más importante que su valor real (generalmente lo es), es mejor nombrarlo.

2

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.

11

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.

1

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

Cuestiones relacionadas