Wyrażenia wartości L i R
Wyrażenia, które odwołują się do lokalizacji pamięci są nazywane wyrażeniami "wartości l".Wartość l reprezentuje wartość "lokatora" obszaru pamięci lub "lewej" wartości, co oznacza, że może występować po lewej stronie znaku równości (=).Wartości l są często identyfikatorami.
Wyrażenia odnoszące się do lokalizacji, którą można modyfikować, są nazywane "wartościami l, które można modyfikować". Wartość l, którą można modyfikować nie może posiadać typu tablicowego, niekompletnego typu lub typu z atrybutem const.Aby struktury i zbiory mogły być wartościami l, które można modyfikować, nie mogą posiadać ż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 wartością l, którą można modyfikować, jeśli odnosi się do lokalizacji w pamięci i jeśli jest jego typem jest typ arytmetyczny, struktura, zbiór lub wskaźnik.Na przykład jeśli ptr jest wskaźnikiem do regionu pamięci, *ptr jest wartością l, którą można modyfikować, która określa region pamięci, na który wskazuje ptr.
Każde z następujących wyrażeń C może być wyrażeniem wartości l:
Identyfikator typu całkowitego, zmiennoprzecinkowego, wskaźnika, struktury lub zbioru
Wyrażenie indeksu dolnego ([ ]), które nie jest oszacowane do tablicy
Wyrażenie wyboru elementów członkowskich (–> lub .)
Wyrażenie jednoargumentowe (*), które nie odwołuje się do tablicy
Wyrażenie wartości l w nawiasach
Obiekt const (wartość l, której nie można modyfikować)
"Wartość r" jest czasami używana do opisywania wartości wyrażenia i odróżniania jej od wartości l.Wszystkie wartości l są wartościami r, ale nie wszystkie wartości r są wartościami l.
Specyficzne dla firmy Microsoft
Język C firmy Microsoft zawiera rozszerzenie standardu ANSI C, które umożliwia rzutowanie wartości l, aby móc używać ich jako l wartości, tak długo, jak rozmiar obiektu nie jest zwiększany poprzez rzutowanie. (Zobacz Konwersje rzutowania typów, aby uzyskać więcej informacji.) Poniższy przykład ilustruje tą cechę:
char *p ;
short i;
long l;
(long *) p = &l ; /* Legal cast */
(long) i = l ; /* Illegal cast */
Domyślne ustawienie dla Microsoft C: włączone są rozszerzenia Microsoft.Użyj opcji kompilatora /Za, aby wyłączyć te rozszerzenia.
KONIEC informacji specyficznych dla firmy Microsoft