2245
Una pregunta que le surge a muchos de los desarrolladores que utilizan lenguajes con sintaxis derivada de C. Los operadores preincremento y postincremento se parecen en prácticamente todo, pero tienen una diferencia de enorme importancia entre ellos, la precedencia, que es necesario conocer.
menéame
++i realiza dos instrucciones (incrementar y retornar) mientras que i++ realiza tres (guardar el estado actual, incrementar, retornar el estado anterior).
i=0;
a=i++;
//a=0, i=1
i=0;
a=++i;
//a=1, i=1
Igual para mi es muy obvio... Pero vamos, simplemente, i++ incrementa después de realizar la operación que le encargues y ++i lo hace antes de la operación.
Para todo lo demás: "Kernighan & Ritchie"
#2 Anda, eso no lo sabía, gracias.
En segundo ciclo (cuando acabas la técnica o 4º si has empezado directamente con la superior) ya teníamos una asignatura sobre compiladores, donde aprendimos como funcionaba internamente un compilador y donde para aprobar tenías que ser capaz de crear un compilador para un lenguaje implementado por ti (curiosamente ese lenguaje siempre se parecía a C una barbaridad).
Ahora en mis ratos libres doy alguna clase de repaso de programación y por la cantidad de código que he visto, la mayoría de la gente parece que desconozca el uso de ++i, y prefieren escribir dos líneas de código del tipo i++; a=i; en lugar de a=++i;
También he visto bastante desconocimiento sobre la sobrecarga de operadores y clases en el caso de C++, una cosa que acaba siendo contraproducente, porqué repiten código por doquier.
Y bueno, en el tema de bucles la cosa tampoco se queda corta, el desconocimiento de cuando aplicar un bucle con for o con while y bueno algo que ya me saca de quicio como meter break (que rompe la anticipación de instrucciones en la CPU) en lugar de evaluar correctamente las condiciones en la definición del bucle.