Compartilhar via


Valor de l e expressões R-Value

Expressões que se referem a locais da memória são chamadas de expressões de "valor de l".Um l-value representa o valor de "localizador" de uma região armazenamento ou um valor de "esquerdo", indicando que ele pode aparecer à esquerda do sinal de igual (=).L-valores geralmente são identificadores.

Referindo-se aos locais podem ser modificadas as expressões são chamadas de "modificáveis l-valores". Um valor l pode ser modificado não pode ter um tipo de matriz, um tipo incompleto ou um tipo com o const atributo.Para estruturas e uniões ser modificáveis l-valores, eles não devem ter todos os membros com o const atributo.O nome do identificador denota um local de armazenamento, enquanto o valor da variável é o valor armazenado nesse local.

Um identificador é um valor l pode ser modificado se ele se refere a um local da memória e se o seu tipo é aritmética, estrutura, união ou ponteiro.Por exemplo, se ptr é um ponteiro para uma região de armazenamento, em seguida, *ptr é um l-valor modificável que designa a região de armazenamento que ptr pontos.

Qualquer uma das expressões de c a seguir pode ser expressões l-value:

  • Um identificador de integral, flutuante, ponteiro, estrutura ou tipo de união

  • Um subscrito ([]) expressão que não avalia a uma matriz

  • Uma expressão de seleção de membro (– > ou .)

  • Um unário-indireção (*) expressão que não se refere a uma matriz

  • Uma expressão de valor de l entre parênteses

  • A const o objeto (um nonmodifiable l-value)

O termo "r-value" às vezes é usado para descrever o valor de uma expressão e para distingui-lo de um valor de l.L todos os valores são valores r, mas nem todos os valores r são valores de l.

Específicos do Microsoft

Microsoft c inclui uma extensão do padrão ANSI C que permite conversões de valores para serem usados como valores l, l, desde que o tamanho do objeto não é aumentado por meio do elenco.(Consulte Conversões de conversão de tipo para obter mais informações.) O exemplo a seguir ilustra esse recurso:

char *p ;
short  i;
long l;

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

O padrão Microsoft C é que as extensões do Microsoft estão habilitadas.Use a opção de compilador /Za para desativar essas extensões.

Específicos do Microsoft final

Consulte também

Conceitos

Operandos e expressões