Bonsoir!

Je voulais savoir si quelqu'un pouvait m'aider à analyser ces quelques lignes de codes:

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));
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.

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