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.
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.
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.
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
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
Merci pour cette réponse claire et rapide ; voilà qui répond parfaite ment à mon interrogation :)