Ist das "* ptr ++ = * ptr + a" undefiniertes Verhalten?

Nun, ich brauche diese Antwort nicht wirklich, ich bin nur neugierig.

Ausdrücke mögen*ptr++ = a sind vollkommen gültig, da wir an zwei Objekten arbeitenptr und*ptr aber wenn ich schreibe*ptr++ = *ptr + a ist es noch gültig?

Betrachten Sie zum Beispiel das folgende Snippet:

int main(void){
   int a[] = {5,7,8,9,2};

   int* p =a;

   *p++ = 76; /*altering the first element */
   *p++ = *p + 32; /*altering the second element */    

   p = a;
   int i;
   for(i = 0;i<5; i++)
      printf("%d ",*p++);

   return 0;
}

Ich denke, dass es mit dem Ausdruck nichts zu befürchten gibt*p++ = *p + 32; Ich bin mir jedoch nicht sicher, um welche Sequenzpunkte es sich handelt.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage