valeur requise
ce que signifie le message d'erreur "Lvalue required" signifie réellement?
source d'informationauteur alfesani
Vous devez vous connecter pour publier un commentaire.
ce que signifie le message d'erreur "Lvalue required" signifie réellement?
source d'informationauteur alfesani
Vous devez vous connecter pour publier un commentaire.
Une lvalue est quelque chose qui peut apparaître sur le côté gauche d'une affectation, en d'autres termes, "quelque chose qui peut être attribué'
Donc, de rechercher une mission où la gauche n'est pas "assignable", par exemple, quelque chose aussi simple que cela pourrait déclencher une telle erreur
Ici, vous avez eu une tentative d'assigner à une constante en raison de accidentellement à l'aide de = plutôt que ==
Voir aussi
Il signifie la mise en œuvre s'attend à un objet, mais vous venez de passer une valeur ou une fonction. Ce qui se passe pour les missions que vous avez passé un non-lvalue ou de l'adresse de l'exploitation de la non-fonctions.
Lvalue signifie "lieu de la valeur" et les moyens d'une expression qui se réfère à un objet soit déclarée comme
register
ou à un emplacement de mémoire. Quelque chose comme42
est une valeur qui ne correspond ni à des critères. Plus formellement, il y a trois catégoriesprintf
est une fonction de désignation, mais&printf
n'est pas, tout en*&printf
est nouveau.var + 0
(ce qui donne une valeur non associés à des objets plus), ou d'un agent recenseur d'une énumération.&printf
appartient à cette catégorie.Le standard C99 unis (6.3.2.1):
Un
lvalue
est une expression avec un type d'objet ou incomplète de type autre que le vide; si unlvalue
ne désigne pas un objet lorsqu'il est évalué, le comportement est indéfini. Lorsqu'un objet est dit d'avoir un type particulier, le type est spécifié par lelvalue
utilisé pour désigner l'objet. Modifiablelvalue
est unlvalue
qui n'a pas de type tableau, ne dispose pas d'un type incomplète, ne pas avoir un const qualifiés de type, et si c'est une structure ou d'une union, n'a pas de membre (y compris, de manière récursive, tout membre ou d'un élément de tous les contenus des agrégats ou des syndicats) avec un const qualifiés de type.Le nom
lvalue
tire son origine de l'expression d'affectationE1 = E2
dans lequel l'opérande de gaucheE1
est nécessaire pour être un (modifiable)lvalue
. C'est peut-être mieux considérée comme représentant un objet "localisateur de valeur". Ce qui est parfois appelérvalue
est dans la présente Norme Internationale décrit comme la "valeur d'une expression".En d'autres termes, un
lvalue
est quelque chose que vous pouvez localiser pour potentiellement en train de changer. Modifiablelvalue
est celui que vous êtes réellement permis à changer.Par exemple, le C déclaration:
est valide parce que
x
est unlvalue
. D'autre part, l'instruction:n'est pas valide car
14
est pas quelque chose que vous pouvez localiser une affectation.L'extrait de code:
crée en fait un
lvalue
appeléx
même si vous n'êtes pas autorisés à modifier (il n'est pas modifiable `lvalue).l'erreur vient si vous code somrthing comme
function(parameter) = value;
parce que vous ne pouvez pas attribuer de la valeur à tout ce qui n'est pas possible conteneur.La plus probable, il signifie que vous avez essayé d'assigner une valeur à quelque chose qui ne peut pas être attribué. Par exemple, les deux serait probablement la cause de cette erreur:
5 = 5;
monobjet->myMethod() = 5;