En x = x + 1
, ¿se evalúa x
dos veces? Si es así, ¿significa eso en x += 1
, x
solo se evalúa una vez? ¿Cómo se evalúan las dos expresiones en términos del código intermedio del compilador?¿Es x + = 1 más eficiente que x = x + 1?
Por ejemplo, podría significar x++
: tomar la ubicación de x
, cargar el contenido del x
en un registro, e incrementar el valor de x
en la memoria.
También he leído que x += 1
es útil cuando x
no es una variable simple, sino una expresión que involucra una matriz. ¿Alguna idea de por qué este es el caso?
Esto suena como una gran cantidad de suposiciones infundadas, en particular el título. No veo una razón por la que uno deba ser más eficiente que el otro y estoy razonablemente seguro de que no es el caso en la mayoría de los compiladores de C. –
Un compilador que vale la pena el dinero que pagó compilará ambas expresiones en el mismo código de objeto. Si le preocupa el rendimiento: ** mida **, mida código diferente, diferentes indicadores de compilación, diferentes usos de recursos, diferentes cosas. – pmg
¿Sabes que x + = 1 es más eficiente que x = x + 1? ¿Has mirado el código objeto generado? – Joe