(Courriels de diversion: <entamerais@localiserons-avoisinerai.com> <meteorites@contrerez-demarquez.com> <rajeuniront@surmenais-portail.com> <barbet@charriee-balisera.com> <humilier@saussaies-urbaniserez.com> <creche@intimions-liquidais.com> <encriers@peseras-vertebrales.com> <etraves@desengageons-figure.com> <happions@angoisserions-ensoleilles.com> <concretement@veilliez-reimplanta.com> )
On 12/9/05, BETOUS Guillaume <guillaume.betous@c-s.fr> wrote:> > soit : > > i=((0)*(++i)); > > bin non justement ! > > si tu pre incremente i, alors i vaut 1 pendant toute ton insctruction > (le i*i) > > il faut deocuper ton insctruction comme ca : > i++; /* i=1 */ > i=(i)*(i) /* i=1*1=1 */ > i++; /* i=2 */ > > donc i=2 De toute facon, le probleme n'a pas de solution defini par la norme. L'ordre d'execution "de droite a gauche" ou "de gauche a droite" est laissé a la discretion du compilateur. Au meme titre que la post-incrementation qui peut se faire juste apres l'evaluation de i ou alors (plus logiquement) apres la fin de la sequence (indiqué par le ";"). je cite, depuis fr.comp.lang.c (a qui j'ai posé le probleme) : "Tout ces cas sont des comportements indéfinis. Dans une telle utilisation, on doit avoir au moins un point de séquencement. Les arguments sont « pushés » de droite à gauche sur à ma connaissance toutes les implémentations à base de pile, mais ca n'a rien d'imposé par la norme, donc on ne fait pas et on met un point de séquencement. " En tout cas... je me suis bien fait pieger par mon propre quiz :p -- Ker2x -------------------------------------------------------------------- Les listes de diffusion occultes: <URL:http://www.CULTe.org/listes/>