Udostępnij za pośrednictwem


Wyrażenia wartości L i R

Wyrażenia, które odwołują się do lokalizacji pamięci są nazywane wyrażeniami „l-wartości”. Wartość l reprezentuje wartość "lokalizatora" regionu magazynu lub wartość "lewą", co oznacza, że może pojawić się po lewej stronie znaku równości (=). L-wartości są często identyfikatorami.

Wyrażenia odwołujące się do modyfikowalnych lokalizacji są nazywane "modyfikowalnymi wartościami l". Modyfikowalna wartość l nie może mieć typu tablicy, niekompletnego typu ani typu z atrybutem const . Aby struktury i związki mogły być modyfikowalne wartości l, nie mogą mieć żadnych elementów członkowskich z atrybutem const . Nazwa identyfikatora oznacza lokalizację pamięci, podczas gdy wartość zmiennej jest wartością przechowywaną w tej lokalizacji.

Identyfikator jest l-wartością, którą można modyfikować, jeśli dotyczy lokalizacji w pamięci i jeśli jego typem jest typ arytmetyczny, struktura, unia lub wskaźnik. Na przykład, jeśli ptr jest wskaźnikiem do regionu pamięci, *ptr jest modyfikowalną l-wartością, która określa region pamięci wskazywany przez ptr.

Każde z następujących wyrażeń C może być wyrażeniem l-wartości:

  • Identyfikator typu całkowitego, zmiennoprzecinkowego, wskaźnika, struktury lub unii

  • Wyrażenie indeksu dolnego ([ ]), które nie daje wartości tablicy

  • Wyrażenie wyboru elementu członkowskiego (-> lub .)

  • Wyrażenie jednoargumentowe (*) nie odwołujące się do tablicy

  • Wyrażenie l-wartości w nawiasach

  • const Obiekt (niemodyfikowalna wartość l))

„R-wartość” jest czasami używana do opisywania wartości wyrażenia i odróżniania jej od l-wartości. Wszystkie l-wartości są r-wartościami, ale nie wszystkie r-wartości są l-wartościami.

Specyficzne dla firmy Microsoft

Microsoft C zawiera rozszerzenie standardu ANSI C, które umożliwia rzutowanie wartości l do użycia jako wartości l, o ile rozmiar obiektu nie jest wydłużany przez rzutowanie. (Aby uzyskać więcej informacji, zobacz Konwersje rzutów typu). Poniższy przykład ilustruje tę funkcję:

char *p ;
short  i;
long l;

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

Ustawieniem domyślnym dla firmy Microsoft C jest to, że rozszerzenia firmy Microsoft są włączone. Użyj opcji /Za kompilatora, aby wyłączyć te rozszerzenia.

END Microsoft Specific

Zobacz też

Operandy i wyrażenia