2015-09-04 12 views
5

So che ad esempio '5' è letterale di tipo char ma è un valore letterale 5 * 5? Questa è espressione, tuttavia ha un valore fisso.5 * 5 è letterale o solo un'espressione?

+7

Si potrebbe voler indicare quale lingua stai usando. –

+1

E probabilmente quale parser/compilatore stai usando. Uno intelligente dovrebbe trasformare automaticamente '5 * 5' in' 25' se lavora con operazioni matematiche. –

+1

@AndrewGrimm Immagino che il suo tipo di ovvio sia Java considerando il tag #java. – Craig

risposta

1

Non penso che si possa definire letterale. È possibile che alcuni compilatori lo trattino nello stesso modo in cui trattano un letterale, vedi il commento su quale lingua stai usando.

12

Come descritto in Java Language Specification §15.28, è un caso particolare di espressione denominato "espressione costante in fase di compilazione". Non è letterale.

+2

Non c'è modo di dire dal codice byte se è stato scritto come '5 * 5' o' 25' +1. –

1

"Letterale" è un termine grammaticale, non semantico. È il blocco di base che denota un valore costante.

Sebbene con la specifica 5 * 5 e 25 significhi esattamente lo stesso, grammaticamente il primo è un'espressione binaria che coinvolge due letterali e un operatore, e il secondo è solo un valore letterale.

0

Non sono sicuro, ma i termini non funzionano così?

  • durante l'utilizzo di un certo valore per definire esattamente valore della variabile "in diritta via" dovrebbe essere chiamato come "letterale"

    var num =5; var stringLabel = "someText"; ecc

  • durante l'utilizzo di una formula o prescrizione dovrebbe essere chiamata come "espressione"

    var result = 5*5; var res2 = a*x;

Ma naturalmente- in risultato che anche costante si può anche essere letterale infatti ..

Ecco come farlo almeno me ..

Si tratta solo di termini - anche come in java ci sono metodi, "linguaggi C" sono funzioni, ecc. - nel senso è anche le stesse cose, quindi dipende solo al limite cosa tollererai del tutto: D