IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

Ajout dans le FAQ


Sujet :

Contribuez

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2015
    Messages : 9
    Points : 15
    Points
    15
    Par défaut Ajout dans le FAQ
    Bonjour,

    Apres quelques recherches sur le net j'ai finalement compris ce qu'est une lvalue ("location value") ou une rvalue ("read value"). Voila le truc c'est que c'est assez flou et qu'il n'y a pas vraiment de réponse (solide) et facilement accessible sur le net en francais, mais plutot une somme de topic qui réponde plus ou mois au sujet de façon plus ou moins bien. Je me disais qu'il serait bien d'ajouté une explication sur ces 2 notions dans la FAQ c puisque le compilo nous sort parfois ces termes.

    Bien à vous

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Tu peux trouver une explication plus détaillée ici: http://en.cppreference.com/w/c/language/value_category

    Une lvalue peut ne pas être modifiable.

    La différence principale, c'est qu'une rvalue n'est pas matérialisée par un objet en mémoire, donc que son adresse ne peut pas être prise
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2015
    Messages : 9
    Points : 15
    Points
    15
    Par défaut lvalue et rvalue
    Bonjour,

    en-effet je n'ai pas eu le reflex d'aller voir le FAQ cpp, une rvalue, si j'ai bien compris, c'est un élément temporaire et non permanent au contraire d'une lvalue qui ce définirai comme un identifiant de valeur qui permet celle-ci de devenir permanente. En gros si j'ai une erreur du type "you try to assign a lvalue line xxx", il me dis que j'essaye d'assignée un identifiant (qui n'est alors que quelque chose de sémantique) comme étant une valeur, un peux comme si j'essayer d'enregistrer une partie de code tel que nous l'écrivons, dans une variable...

    Je voudrai juste rappeler si des gens viennent à lire ce topic que la compression d'un langage par un ordinateur au moment de la compilation s'effectue en trois étapes (on ne parle pas de la "chaîne de compilation" ici mais plutôt du principe algorithmique de conversion d'un langage en binaire) :

    -> l'aspect lexicale, définit les symbole ou les caractère qui servent à la rédaction du programme.
    -> l'aspect syntaxique, définit l'ensemble des règle grammaticale qui permet l'assemblage des mot dans une phrase.
    -> l'aspect sémantique qui étudie la signification d'une phrases.

    On retrouve ici la définition d'un langage de haut niveaux, ce n'est qu’après avoir effectuer l'analyse lexicale, syntaxique puis sémantique que le compilateur sera apte à transformer le code source en binaire. La notion de lvalue et rvalue, sont des notions qui touche alors à la sémantique du code source et au sens même des phrases de code. Dans une phrase du type:

    x sera alors l'identifiant de la valeur 8 et donc a proprement parler une lvalue tandis que 8 si on n'utilise pas x par la suite, il sera impossible de le retrouvé c'est alors une rvalue (hormis récrire 8). Si maintenant on écris:

    y ne prendra pas la valeur 'x' à proprement parler mais la valeur que x identifie c'est dire 8. Dans certain qu'a dans le langage c le compilateur peux nous grondé dessus et nous dire qu'a la phase d'analyse sémantique il à compris que l'on essaye d'assigné à y le terme 'x' (qui pour lui ne corresponds pas à un char mais à un terme du language une lvalue). Ca ne nous arrivera jamais de tomber sur cette erreur pour le cas ci-dessus; mais plus souvent et par exemple lors de la manipulation de tableaux.

    Dans ce dernier cas on peux donc identifier la notion de "location value" qui permet de localiser, de retrouver une valeur et de "read value", la valeur que l'ordinateur lit quand on effectue "y = x" c'est à dire 8.

  4. #4
    Membre expérimenté

    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2009
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 553
    Points : 1 672
    Points
    1 672
    Par défaut
    Mince, j'ai toujours pensé que le "L" c'était pour "Left", et "R" pour "Right"...

  5. #5
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    C'est pourtant la raison de ces noms. Initialiement.
    une lvalue peut être à gauche d'un =, pas une rvalue.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2015
    Messages : 9
    Points : 15
    Points
    15
    Par défaut Je ne comprends pas...
    Citation Envoyé par ternel Voir le message
    C'est pourtant la raison de ces noms. Initialiement.
    une lvalue peut être à gauche d'un =, pas une rvalue.
    C'est le "peut" qui rend l'usage de ce nom ("left value") absurde. En-effet un lvalue peux ce trouver à droite (sémantiquement parlant) bien que ce soit en réalité une référence à une rvalue...
    https://msdn.microsoft.com/fr-fr/library/f90831hc.aspx

Discussions similaires

  1. [FAQ] Demande d'ajout concernant la FAQ jQuery: formuler une requête AJAX
    Par clairetj dans le forum Contributions JavaScript / AJAX
    Réponses: 4
    Dernier message: 07/03/2016, 10h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo