Re: Point de sequencement dans un appel de function
[ Nouvelle discussion
| Répondre au groupe
|
fr.comp.lang.c ]
Sujet: Re: Point de sequencement dans un appel de function
De: Marc.Bo...@enseeiht.yahoo.fr.invalid (Marc Boyer)
Groupes: fr.comp.lang.c
Organisation: CICT
Date: 28. Apr 2008, 09:01:15
References: 1
|
On 2008-04-28, candide <c_candide@free.fr> wrote:
> Bonjour,
>
> Soit le code :
>
> ----------------------
> #include <stdio.h>
>
> int main(void)
> {
> int i = 10;
>
> printf("%d %d \n", i++,i);
> return 0;
> }
> ----------------------
>
> qui, à la compilation, m'affiche ceci :
>
> ----------------------
> candide@candide-desktop:~$ gcc -W -Wall -pedantic -o x test.c
> test.c: In function «main":
> test.c:7: attention : operation on «i" may be undefined
Il est gentil gcc.
> ----------------------
>
> J'ai cru que c'était un problème de point de séquencement ou d'ordre
> d'évaluation des arguments mais j'ai l'impression que c'est plus grave
> que ça.
Non, non, c'est ça.
> Est-ce que le "undefined" dont parle gcc est un "undefined behavior" ?
>
> Est-ce que je tomberais sous le coup de
>
> A.6.2 Undefined behavior
> (...)
> An object is modified more than once, or is modified and accessed
> other than to determine the new value, between two sequence points
Exactement.
> Le point de séquencement se produit à la fin de l'appel et non pas après
> l'évaluation de _chaque_ argument, n'est-ce pas ? Car je trouve ceci pas
> très clair :
En effet, les points de séquencement ne sont pas ce qu'il y a de plus
clair dans la norme. Mais bon, ce cas là étant tellement connu, la
réponse à ta question est "oui": le point de séquencement se produit
à la fin de l'appel et non pas après l'évaluation de _chaque_ argument.
Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. André Maurois)

|
 cette fonctionnalité est reservée aux membres ayant une session active !
|