Bonsoir!
Je voulais savoir si quelqu'un pouvait m'aider à analyser ces quelques lignes de codes:
Pour la première ligne, aucun souci, en revanche pour les suivantes, j'ai beau consulter les normes, j'ai vraiment du mal à trouver le résultat voulu de tête.int a=30, b=10, c[3]={5,15,4}, *p;
p=c;
printf ("%d %d %d %d %d\n\n", a, b, p[0], p[1], p[2]); // 30, 10, 5, 15, 4
printf ("%d\n", a/=*p++);
printf ("%d\n", (*(p++)%= (++a-1)) );
printf ("%d\n", *p=!(*p-4));
printf ("%d\n", b+=*p--);
printf ("%d\n", 2+(a=*(p=c)+3));
printf ("%d %d %d %d\n",b, p[0],a, *(c+2));
Par exemple, pour la seconde ligne j'aurais bien dit que le résultat affiché vaut 7, ce qui n'est pas le cas.
En effet:
a/=*p++
> a= a/*p++
> a= 30/5 ++
D'ou a=7...
Bien évidemment je sais que j'ai faux, mais j'aimerais bien en connaitre la raison.
Merci d'avance
Partager