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.