Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Membre régulier
    Inscrit en
    septembre 2007
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 27

    Informations forums :
    Inscription : septembre 2007
    Messages : 234
    Points : 72
    Points
    72

    Par défaut lvalue rvalue ?

    Bonjour,
    J'étudie en ce moment un tutorial : http://c.developpez.com/cours/poly-c/?page=page_2

    J'ai pas compris grand chose au lvalue et rvalue, j'ai cherché sur le net et ca m'a pas parrut simple

    Quelqun pourrais m'expliquer clairement SVP

  2. #2
    Expert Confirmé Sénior


    Homme Profil pro Denis
    Étudiant
    Inscrit en
    décembre 2011
    Messages
    5 059
    Détails du profil
    Informations personnelles :
    Nom : Homme Denis
    Âge : 21
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2011
    Messages : 5 059
    Points : 15 120
    Points
    15 120

    Par défaut

    Si je ne dis pas de bêtise, une lvalue est ce qui peut être/est à gauche d'un '=' et une rvalue, ce qui est à droite.

  3. #3
    Membre confirmé

    Inscrit en
    décembre 2012
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : décembre 2012
    Messages : 50
    Points : 255
    Points
    255

    Par défaut


    Lvalue désigne ce qui peut être mis à gauche du signe égal, alors que rvalue désigne ce qui ne peut pas être mis à gauche du signe égal.

    Ces noms proviennent de l'anglais "left" qui signifie gauche et "right" qui signifie droite.

    Pour fixer les idées, l'expression "4" n'est pas une lvalue car on ne peut pas écrire quelque chose comme :


    "4" est donc une rvalue.

    À l'inverse, une variable nommée "mon_entier" est une lvalue car on peut écrire quelque chose comme :

    Code C :
    1
    2
    int mon_entier;
    mon_entier = 10;

  4. #4
    Membre régulier
    Inscrit en
    septembre 2007
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 27

    Informations forums :
    Inscription : septembre 2007
    Messages : 234
    Points : 72
    Points
    72

    Par défaut

    ok comprendo,
    je vous remercie

  5. #5
    Membre émérite
    Avatar de Kirilenko
    Homme Profil pro Lucas Pesenti
    Étudiant
    Inscrit en
    décembre 2011
    Messages
    234
    Détails du profil
    Informations personnelles :
    Nom : Homme Lucas Pesenti
    Âge : 17
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2011
    Messages : 234
    Points : 819
    Points
    819

    Par défaut

    Bonjour,

    En théorie, une lvalue ne se définit pas à partir de l'opérateur =. Rigoureusement, une lvalue est une expression qui désigne potentiellement un objet, tandis que l'opérande de gauche de l'opérateur d'affectation doit être une lvalue modifiable. En effet, il existe également des lvalues qui ne sont pas modifiables :
    • les types tableaux ;
    • les types incomplets ;
    • les types qualifiés de const.

    D'autre part, bien que le terme de rvalue ne soit pas normalisé, il est cependant décrit dans une note de pied de page (donc non normative) comme étant la valeur d'une expression.

    Par ailleurs, à moins que la normalisation ait changé entre temps (je n'ai parcouru que la norme C11), le paragraphe du cours à ce sujet ne me semble pas être correct.

    Bonne journée.
    Récursivité en C : épidémie ou hérésie ?

    "Pour être un saint dans l'Église de l'Emacs, il faut vivre une vie pure. Il faut se passer de tout logiciel propriétaire. Heureusement, être célibataire n'est pas obligé. C'est donc bien mieux que les autres églises" - Richard Stallman

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •