Sdílet prostřednictvím


Výrazy hodnot L-Value a R-Value

Výrazy, které odkazují na umístění v paměti se nazývají výrazy "l hodnota".l hodnota představuje hodnotu oblasti úložiště "lokátoru" nebo "levou" hodnotu, ze které vyplývá, že může být zobrazena nalevo od znaménka rovnosti (=).l hodnoty jsou často identifikátory.

Výrazy odkazující na upravitelná umístění se nazývají "upravitelné l hodnoty". Upravitelná l hodnota nemůže mít typ pole, neúplný typ nebo typ s atributem const.Aby mohly být struktury a sjednocení l hodnotami, nesmí obsahovat žádné členy s atributem const.Název identifikátoru označuje umístění úložiště, zatímco hodnota proměnné je hodnota uložená v tomto umístění.

Identifikátor je upravitelná l hodnota, odkazuje-li na umístění v paměti a je-li její typ aritmetický, struktura, sjednocení nebo ukazatel.Například pokud je ptr ukazatel na úložiště oblasti, pak je *ptr upravitelná l hodnota, která určuje oblast úložiště na které ukazuje ptr.

Jakýkoli z těchto výrazů jazyka C může být výraz l hodnoty:

  • Identifikátor integrálního typu, typu s plovoucí řádovou čárkou, typu ukazatele, struktury nebo sjednocení

  • Výraz dolního indexu ([ ]), který není vyhodnocen na pole

  • Výraz výběru člena (–> nebo .)

  • Výraz unární dereference (*), který neodkazuje na pole

  • Výraz l hodnoty v závorkách

  • Objekt const (neupravitelná l hodnota)

Pojem "r hodnota" se někdy používá k popisu hodnoty výrazu a pro jeho odlišení od l hodnoty.Všechny l hodnoty jsou r hodnoty, ale ne všechny r hodnoty jsou l hodnoty.

Specifické pro Microsoft

Microsoft C zahrnuje rozšíření standardu ANSI C, který umožňuje přetypovat l hodnoty pro použití jako l hodnoty do doby, dokud není velikost objektu zvětšena pomocí přetypování. (Další informace naleznete v tématu Převody přetypování.) Tuto funkci ukazuje následující příklad:

char *p ;
short  i;
long l;

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

Ve výchozím nastavení pro jazyk Microsoft C jsou rozšíření společnosti Microsoft povoleny.Použijte možnost kompilátoru /Za pro zákaz těchto rozšíření.

Specificka produktu Microsoft END

Viz také

Koncepty

Operandy a výrazy