Domanda

Cosa significa la parola "letterale" se utilizzata in un contesto come stringhe letterali e valori letterali?

Qual è la differenza tra un valore letterale e un valore?

È stato utile?

Soluzione

Un valore letterale è "qualsiasi notazione per che rappresentano un valore all'interno del codice sorgente" (Wikipedia)

(Confronta questo con identificatori, Quale fare riferimento ad un valore in memoria.)

Esempi:

  • "hey" (una stringa)
  • false (un booleano)
  • 3.14 (un numero reale)
  • [1,2,3] (un elenco di numeri)
  • (x) => x*x (una funzione)
  • /^1?$|^(11+?)\1+$/ (un'espressione regolare)

Alcune cose che non sono letterali:

  • std::cout (un identificatore)
  • foo = 0; (una dichiarazione)
  • 1+2 (un espressione)

Altri suggerimenti

Un letterale è un valore che è stato codificato direttamente nella sorgente.

Ad esempio:

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

Alcuni letterali possono avere una sintassi speciale, in modo da sapere che tipo letterale è:

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

Ciò che li contraddistingue dalle variabili o risorse è che il compilatore li può trattare come costanti o eseguire certe ottimizzazioni con il codice in cui sono utilizzati, perché è certo che non cambierà.

Un letterale è un incarico per un valore esplicito, come ad esempio

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:. Come sottolineato, l'assegnazione sé non ha nulla a che fare con la definizione di un letterale, stavo usando incarico nel mio esempio, ma un letterale può anche essere passato in un metodo, etc

Un letterale è quando si include il valore nel codice sorgente (in contrasto con riferimento a una variabile o una costante). Ad esempio:

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 il letterale rappresenta una certa quantità, come una costante fisica, è meglio dargli un nome invece di scrivere la stessa letterale ovunque ne avete bisogno. In questo modo, quando si sta leggendo il codice sorgente, si sa che cosa il numero significa , che di solito è più importante del suo valore (che potrebbe cambiare in ogni modo).

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

In generale, gli unici letterali numerici che uso (oltre inizializzare costanti come sopra) sono 0 o 1, e talvolta 2 se sto saltando ogni altro elemento in un ciclo. Se il significa del numero è più importante rispetto al suo effettivo Valore (di solito è), la sua migliore per il nome.

Un valore letterale è una valore, ma un valore potrebbe anche essere memorizzato in una variabile. Nella dichiarazione

string str = "string literal";

c'è una variabile stringa (str) e una stringa letterale. Dopo che viene eseguita l'istruzione entrambi hanno lo stesso valore.

Si tenga presente che in molte lingue la variabile e il valore letterale non necessariamente hanno nemmeno bisogno di essere dello stesso tipo. Ad esempio:

int a = 1.0;

Il valore letterale sopra è un tipo a virgola mobile. Il valore sarà costretta dal compilatore per adattarsi nella variabile int.

Per un altro esempio, nella prima riga di codice C ++ sopra il tipo di una stringa letterale non è in realtà il tipo di libreria string affatto. Per mantenere la compatibilità con C, stringhe in C ++ sono array di caratteri.

Esempio rapida:

int my_int_var = 723;

723 -. Questo insieme di caratteri si riferisce ad un letterale valore intero

my_int_var -. Questo insieme di caratteri si riferisce ad un variabile valore intero

Un letterale è quando lo metti nel codice. Quindi una stringa letterale è

string s = "SomeText";

Questo è in contrasto con la costruzione della stringa, o prenderlo come parametro.

In genere quando qualcuno usa la parola letterale significano il valore è decifrabili dal codice (testo), come mostrato in molti degli esempi in altri post.

Un altro utilizzo comune è per valori che vengono convertite in valori immediati in assemblaggio. Questi sono valori che vengono inseriti direttamente nella istruzione macchina anziché richiedere carichi registro.

Ho sentito stringhe letterali utilizzate con disinvoltura per riferirsi a ciò che specifica il C # in realtà si riferisce a stringhe letterali come Verbatim. Una stringa regolare letterale consente la fuoriuscita di alcuni caratteri (prefisso a), come \ t per una scheda. Una stringa verbatim letterale è anteposto da @ e trattati alla lettera, \ non ha un significato speciale.

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

Un letterale è "la rappresentazione del codice sorgente dei dati".

I letterali sono notazione abbreviata per i valori in alcuni tipi che la lingua ritiene così importante o fondamentale che ha dedicato lo zucchero sintassi solo per loro.

Esempio di tipi cui valori sono spesso rappresentati da costanti:

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

Alcune lingue hanno anche per la funzione tipi:

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

Un esempio di valori che non sono solitamente rappresentato con letterali sarebbe valori di tipi di classe:

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

Qui il valore Car("BMW", 5) nel tipo Car è infatti indicata univoco utilizzando una sequenza di simboli, tuttavia, il valore non viene rappresentata utilizzando abbreviazione dedicato letterale, ma utilizza generale (dettagliato) meccanismi convenzionali per denotare valori di qualsiasi tipo di classe.

Il termine letterale è sinonimo di termini valore , esempio , costante , membro e elemento di un tipo, ma porta un po 'di senso in più che ci dice che c'è una scorciatoia per scrivere verso il basso.

Mi piace pensare letterali come geroglifici egiziani al contrario di concatenare i caratteri da un alfabeto per esprimere un concetto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top