Condividi tramite


Espressioni di che Sia e l-value

Le espressioni che fanno riferimento alle posizioni di memoria vengono chiamate espressioni “l-value„.Un l-value rappresenta un valore “localizzatore„ dell'area di archiviazione, o “left„ il valore, implicante che potrebbero comparire a sinistra del segno di uguale (=).i valori l-value solo sono spesso identificatori.

Le espressioni che fanno riferimento alle posizioni modificabili sono definite “valori l-value solo modificabili.„ Un l-value modificabile non può avere un tipo di matrice, un tipo incompleto, o con const attributo.Per le strutture e unioni sono valori l-value solo modificabili, non devono contenere alcuni membri con const attributo.Il nome dell'identificatore indica un percorso di archiviazione, mentre il valore della variabile è il valore archiviato in tale posizione.

Un identificatore è un l-value modificabile se fa riferimento a una posizione di memoria e se il tipo è aritmetico, struttura, unione, o puntatore.Ad esempio, se ptr è un puntatore a un'area di archiviazione, quindi *ptr è un l-value modificabile che definisce l'area di archiviazione a cui ptr punti.

Uno dei seguenti espressioni di C possono essere espressioni l-value:

  • Un identificatore dell'integrale, di mobile, puntatore, una struttura, o il tipo di unione

  • Un indice ([]) espressione che non restituisce una matrice

  • Un'espressione di selezione dei membri (- > o .)

  • un unario-riferimento indiretto (*) espressione che non fa riferimento a una matrice

  • Un'espressione l-value tra parentesi

  • In const oggetto (un l-value non modificabile)

Il termine “r-value„ talvolta viene utilizzato per descrivere il valore di un'espressione e per distinguerlo da un l-value.Tutti i valori l-value solo sono r-valori ma non tutti i r-valori sono valori l-value solo.

Specifici di Microsoft

Microsoft C include un'estensione allo standard ANSI C che consente i cast dei valori l-value solo da utilizzare come valori l-value solo, purché la dimensione dell'oggetto non viene allungata tramite il cast.(Vedere Conversioni di cast di tipo per ulteriori informazioni.) Nell'esempio seguente viene illustrata questa funzionalità:

char *p ;
short  i;
long l;

(long *) p = &l ;       /* Legal cast   */
(long) i = l ;          /* Illegal cast */

L'impostazione predefinita per Microsoft C# è che le estensioni Microsoft sono abilitate.Utilizzare l'opzione del compilatore /Za per disabilitare le estensioni.

Microsoft FINALE specifico

Vedere anche

Concetti

Operandi e espressioni