jueves, 27 de noviembre de 2008

variable++ o ++variable?

Por fin me topé con un caso real en que cometí el error de usar variable++ sin pensar en las fatales consecuencias.

Lo siguiente deja siempre a c con el valor 0:

int c = 0;
for (int i = 0;true; i++) {
c =(c++)%1000;
...
}

Eso porque c++ quiere decir que justo luego de evaluar la expresión de la derecha, c debe incrementarse en 1. Entonces, la expresión se evalúa en cero, c queda en 1, pero como a c luego se le asigna el valor de la expresión, que es cero, c queda en cero.

Solución: ++c.

No hay comentarios: