Dela via


L-Value- och R-Value-uttryck

Uttryck som refererar till minnesplatser kallas "l-value"-uttryck. Ett l-värde representerar ett värde för lagringsregionens "positionerare" eller ett "vänster"-värde, vilket innebär att det kan visas till vänster om likhetstecknet (=). L-värden är ofta identifierare.

Uttryck som refererar till ändringsbara platser kallas "ändringsbara l-värden". Ett ändringsbart l-värde kan inte ha en matristyp, en ofullständig typ eller en typ med const attributet. För att strukturer och fackföreningar ska vara ändringsbara l-värden får de inte ha några medlemmar med attributet const . Namnet på identifieraren anger en lagringsplats, medan värdet för variabeln är värdet som lagras på den platsen.

En identifierare är ett ändringsbart l-värde om det refererar till en minnesplats och om dess typ är aritmetik, struktur, union eller pekare. Om till exempel ptr är en pekare till en lagringsregion är det *ptr ett ändringsbart l-värde som anger den lagringsregion som ptr pekar på.

Något av följande C-uttryck kan vara l-value-uttryck:

  • En identifierare för integral, flytande, pekare, struktur eller unionstyp

  • Ett nedsänkt uttryck ([ ]) som inte utvärderas till en matris

  • Ett medlemsvalsuttryck (-> eller .)

  • Ett unary-indirection-uttryck (*) som inte refererar till en matris

  • Ett l-värdeuttryck inom parenteser

  • Ett const objekt (ett icke-modifierat l-värde)

Termen "r-value" används ibland för att beskriva värdet för ett uttryck och för att skilja det från ett l-värde. Alla l-värden är r-värden, men inte alla r-värden är l-värden.

Microsoft-specifik

Microsoft C innehåller ett tillägg till ANSI C-standarden som gör att avgjutningar av l-värden kan användas som l-värden, så länge objektets storlek inte förlängs genom gjutningen. Mer information finns iType-Cast Konverteringar. I följande exempel visas den här funktionen:

char *p ;
short  i;
long l;

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

Standardvärdet för Microsoft C är att Microsoft-tilläggen är aktiverade. Använd kompilatoralternativet /Za för att inaktivera dessa tillägg.

Avsluta Microsoft Specifik

Se även

Operander och uttryck