¿Es este comportamiento indefinido “* ptr ++ = * ptr + a”?
Bueno, no estoy realmente en necesidad de esta respuesta, solo soy inquisitivo.
Expresiones como*ptr++ = a
Son perfectamente válidos ya que estamos operando en dos objetos.ptr
y*ptr
pero si escribo*ptr++ = *ptr + a
Sigue siendo válido ?
Por ejemplo, considere el siguiente fragmento de código:
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;
}
Creo que no hay nada de qué preocuparse con la expresión.*p++ = *p + 32;
pero no estoy seguro de los puntos de secuencia involucrados.