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
----------------------
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.
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
?
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 :
A.2 SEQUENCE POINTS
The following are the sequence points described in [1211]2.1.2.3
* The call to a function, after the arguments have been evaluated
Merci.