Todavía estoy un poco confundido después de leer el tema this. ¿Está bien definida la expresión C++ *d++ = ~(*d);
? Sí, sé que las expresiones compuestas como esta son feas. No lo escribí.¿Este código está bien definido?
veo una ligera diferencia en el conjunto generado cuando lo comparo con:
*d = ~(*d);
d++;
Asamblea:
*d++ = ~(*d);
0x83384 LDR R3,[R0 <d>,4] <<diff
0x83388 ADD R1 <c>, R1 <c>, 1
0x8338c MVN R3, R3
0x83390 STR R3,[R0 <d>],4
vs
*d = ~(*d);
d++;
0x83384 LDR R3,[R0 <d>]
0x83388 ADD R1 <c>, R1 <c>, 1
0x8338c MVN R3, R3
0x83390 STR R3,[R0 <d>],4
Gracias!
Todo lo que el ensamblador le dirá es qué hizo esta versión particular de este compilador en particular con la configuración que utilizó en este momento en particular. No dice nada de lo que está garantizado o no por el estándar. –
Gracias. Inicialmente pensé que podría ser útil ver qué estaba generando el compilador en el contexto de esta pregunta. Ahora veo que cualquier cosa (en el caso indefinido) podría haberse generado potencialmente. – Mav3rick