Pergunta

O que a palavra "literal" significa quando usado em contexto como strings literais e valores literais?

O que é a diferença entre um valor literal e um valor?

Foi útil?

Solução

Um literal é "qualquer notação para representa um valor no código fonte" ( wikipedia )

(Compare isso com identificadores , que referem para um valor na memória.)

Exemplos:

  • "hey" (a string)
  • false (a boolean)
  • 3.14 (um número real)
  • [1,2,3] (a lista de números)
  • (x) => x*x (a função)
  • /^1?$|^(11+?)\1+$/ (a regexp)

Algumas coisas que não são literais:

  • std::cout (um identificador)
  • foo = 0; (a declaração)
  • 1+2 (uma expressão)

Outras dicas

Um literal é um valor que tem sido codificado diretamente em sua fonte.

Por exemplo:

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

Alguns literais pode ter uma sintaxe especial, então você sabe que tipo do literal é:

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

O que os diferencia de variáveis ??ou recursos é que o compilador pode tratá-los como constantes ou executar determinadas otimizações com código de onde eles são usados, porque é certo que não vai mudar.

Um literal é uma atribuição de um 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 foi salientado, a atribuição em si não tem nada a ver com a definição de um literal, eu estava usando atribuição no meu exemplo, mas um literal também podem ser passadas para um método, etc

.

Um literal é quando você incluir o valor no código fonte (em oposição a fazer referência a uma variável ou uma constante). Por exemplo:

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)

Se o literal representa alguma quantidade, como uma constante física, é melhor dar-lhe um nome em vez de escrever o mesmo literal em todos os lugares que você precisar. Dessa forma, quando você está lendo o código-fonte, você sabe o que o número através , que é geralmente mais importante do que o seu valor (que poderia mudar de qualquer maneira).

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

Geralmente, as únicas literais numéricos que eu uso (além de inicializar constantes como acima) são 0 ou 1, e às vezes 2 se eu estou saltando todos os outros itens em um loop. Se o significa do número é mais importante do que a sua real valor (normalmente é), o seu melhor para nomeá-lo.

Um valor literal é um valor, mas um valor pode também ser armazenado em uma variável. No comunicado

string str = "string literal";

há uma variável string (str) e um literal string. Após a instrução é executada ambos têm o mesmo valor.

Esteja ciente de que em muitas línguas a variável e o valor literal não necessariamente tem que mesmo ser do mesmo tipo. Por exemplo:

int a = 1.0;

O valor literal acima é um tipo de ponto flutuante. O valor será coagido pelo compilador para ajuste na variável int.

Para outro exemplo, na primeira linha de código C ++ acima do tipo de um literal cadeia não é realmente o tipo string biblioteca em tudo. Para manter a compatibilidade com C, strings literais em C ++ são matrizes de caracteres.

exemplo rápido:

int my_int_var = 723;

723 -. Este conjunto de caracteres refere-se a um literal valor inteiro

my_int_var -. Este conjunto de caracteres refere-se a uma variável valor inteiro

Um literal é quando você colocá-lo no código. Assim, uma string literal é

string s = "SomeText";

Esta é em oposição à construção da cadeia, ou tomá-lo como um parâmetro.

Geralmente quando alguém usa a palavra literal que significa que o valor é decifrável a partir do código (texto) como mostrado em muitos dos exemplos em outros lugares.

Outro uso comum é para valores que são convertidos em valores imediatos em conjunto. Estes são valores que são inseridos diretamente na instrução de máquina em vez de exigir cargas de registro.

Eu ouvi strings literais utilizado casualmente para se referir ao que o C especificação # , na verdade, se refere como strings literais literais. Um literal seqüência regular permite a escapar de certos caracteres (prefixado por um), como \ t para uma tabulação. Um literal de cadeia verbatim é anexado por @ e processados ??na íntegra, \ não tem nenhum significado especial.

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

Um literal é "representação de código fonte de dados".

literais são notação abreviada para valores em certos tipos de que a linguagem considera tão importante ou fundamental que tem açúcar sintaxe dedicado só para eles.

Exemplo de tipos cujos valores são frequentemente representados por literais:

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

Algumas línguas têm mesmo para a função tipos:

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

Um exemplo de valores que normalmente não são representados com literais seria valores de tipos de classes:

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

Aqui o valor Car("BMW", 5) no tipo Car é de fato indicada exclusivamente usando uma sequência de símbolos, no entanto, o valor não é representado usando um literal taquigrafia dedicado, mas em vez disso usa (detalhado) mecanismos nocionais gerais para valores que denotam de qualquer tipo de classe .

A expressão literal é sinónimo de termos valor , exemplo , constante , membro e elemento de um tipo, mas carrega um pouco de significado extra que nos diz que há um atalho para escrevê-la.

Eu gosto de pensar sobre literais como hieróglifos egípcios em oposição ao encadeamento de caracteres de um alfabeto para expressar um conceito.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top