Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

lvalue or not lvalue ?

4 réponses
Avatar
Taurre
Bonjour =E0 tous,

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

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

i et p d=E9signent 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=F9 l'on pe=
ut trouver la r=E9ponse dans la norme C ?

Merci d'avance pour vos r=E9ponses.

4 réponses

Avatar
Stephane Legras-Decussy
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.
Avatar
Jean-Marc Bourguet
Taurre writes:

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
Avatar
Jean-Marc Bourguet
Stephane Legras-Decussy writes:

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
Avatar
jerome.frgacic
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 :)