lvalue or not lvalue ?

Le
Taurre
Bonjour à tous,

Je me pose une petite question « simple » depuis un moment. Dans le cod=
e suivant :

int i = 0;
int *p = &i;

i et p désignent des objets, mais s'agit-il pour autant de lvalues ? Dans=
un cas comme dans l'autre, vous serait-il possible de me dire où l'on pe=
ut trouver la réponse dans la norme C ?

Merci d'avance pour vos réponses.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Stephane Legras-Decussy
Le #24670791
Le 31/07/2012 11:33, Taurre a écrit :
Bonjour à tous,

Je me pose une petite question « simple » depuis un moment. Dans le code suivant :

int i = 0;
int *p =&i;

i et p désignent des objets, mais s'agit-il pour autant de lvalues ? Dans un cas
comme dans l'autre, vous serait-il possible de me dire où l'on peut trouver
la réponse dans la norme C ?



hum... à ma connaissance une lvalue est tout simplement un "truc" qu'on
peut écrire à gauche d'un
the term on the left hand side of an assignment.

donc oui i et p sont des lvalue.
Jean-Marc Bourguet
Le #24671251
Taurre
Bonjour à tous,

Je me pose une petite question « simple » depuis un moment. Dan s le code suivant :

int i = 0;
int *p = &i;

i et p désignent des objets, mais s'agit-il pour autant de lvalues ? Dans un cas comme dans l'autre, vous serait-il possible de me dire où l'on peut trouver la réponse dans la norme C ?

Merci d'avance pour vos réponses.



6.3.2.1/1

An lvalue is an expression (with an object type other than void) that
potentially designates an object.

i dans la premiere ligne et p dans la deuxieme ne sont pas des
expressions, donc la question ne se pose pas pour eux. Dans la deuxieme,
oui i est une lvalue.

Si maintenant tu parles d'un i et d'un p qui designerait ces
definitions, oui ce sont des lvalues. Tout comme *p d'ailleurs (meme si
p est NULL, c'est une propriete statique qui ne depend pas des valeurs
en presence).

A+

--
Jean-Marc
FAQ de fclc: http://www.levenez.com/lang/c/faq
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Jean-Marc Bourguet
Le #24671241
Stephane Legras-Decussy
hum... à ma connaissance une lvalue est tout simplement un "truc" qu 'on
peut écrire à gauche d'un =



En premiere approximation. Mais

int const* p;

*p est une lvalue, meme si *p = 42 est rejete par le compilateur.

--
Jean-Marc
FAQ de fclc: http://www.levenez.com/lang/c/faq
Site de usenet-fr: http://www.usenet-fr.news.eu.org
jerome.frgacic
Le #24671871
Le mardi 31 juillet 2012 15:09:04 UTC+2, Jean-Marc Bourguet a écrit :

6.3.2.1/1

An lvalue is an expression (with an object type other than void) that
potentially designates an object.

i dans la premiere ligne et p dans la deuxieme ne sont pas des
expressions, donc la question ne se pose pas pour eux. Dans la deuxieme,
oui i est une lvalue.

Si maintenant tu parles d'un i et d'un p qui designerait ce
definitions, oui ce sont des lvalues. Tout comme *p d'ailleurs (meme si
p est NULL, c'est une propriete statique qui ne depend pas des valeurs
en presence).

A+

--
Jean-Marc
FAQ de fclc: http://www.levenez.com/lang/c/faq
Site de usenet-fr: http://www.usenet-fr.news.eu.org




Merci pour cette réponse claire et rapide ; voilà qui répond parfaite ment à mon interrogation :)
Publicité
Poster une réponse
Anonyme