Pregunta

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

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

¿Fue útil?

Solución

Un literal es "cualquier notación para en representación de un valor dentro de código fuente" (wikipedia)

(Esto contrasta con identificadores, que consulte a un valor en la memoria.)

Ejemplos:

  • "hey" (una cadena)
  • false (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 regexp)

Algunas cosas que no son literales:

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

Otros consejos

Un literal es un valor que ha sido modificable 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, para que sepa qué tipo es 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 de código con los que se utilizan, porque es seguro que no van a cambiar.

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 pueden pasar en un método, etc.

Un literal es cuando se incluye el valor en el código fuente (en contraposición a 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 se está leyendo el código fuente, ya sabes lo que el número de significa , que suele ser 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 que utilizo (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 significa de la serie es más importante que su real valor (por lo general es), es mejor que sea.

Un valor literal es un valor, sino un valor también podría ser almacenado en una variable. En la declaración

string str = "string literal";

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

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

int a = 1.0;

El valor literal anterior es un tipo de coma flotante. El valor será coaccionado por el compilador para encajar en la variable int.

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

Ejemplo rápido:

int my_int_var = 723;

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

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

Un literal es cuando se pone en el código. Así que es una cadena literal

string s = "SomeText";

Esto es a diferencia de la construcción de la cadena, o tomarlo como un parámetro.

Generalmente cuando alguien utiliza la palabra literal que significan el valor es descifrable a partir del código (texto) como se muestra en muchos de los ejemplos de otros mensajes.

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

He escuchado los literales de cadena se utiliza de manera informal para referirse a lo que el C# especificación en realidad se refiere a como literales literales de cadena.Regular de un literal de cadena permite el escape de ciertos personajes (precedidas por una ), como para una ficha.Un literal de cadena literal es precedido por @ y procesados pie de la letra, \ no tiene ningún significado especial.

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

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

Los literales son notación abreviada de valores en ciertos tipos de lenguaje que considera tan importante o fundamental que ha dedicado el azúcar sintaxis sólo 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", ... }

Algunas lenguas tienen incluso para la función tipos:

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

Un ejemplo de valores que por lo general no están representados con literales sería 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 es de hecho denota de forma única mediante una secuencia de símbolos, sin embargo, el valor no se representa usando una taquigrafía dedicado literal, sino que utiliza general (detallado) mecanismos nocionales para denotar valores de cualquier tipo de clase.

El término literal es sinónimo de términos valor , ejemplo , constante , miembro y elemento de un tipo, pero lleva un poco de sentido extra que nos dice que hay un atajo para escribirla.

Me gusta pensar en los literales como los jeroglíficos egipcios en lugar de encadenar caracteres de un alfabeto con el fin de expresar un concepto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top