Esta pregunta está inspirada en this question, que presenta el siguiente fragmento de código.¿Cuáles son las ventajas de aplastar la asignación y la comprobación de errores en una línea?
int s;
if((s = foo()) == ERROR)
print_error();
puedo encontrar este estilo difícil de leer y propenso a errores (como la pregunta original demuestra - que fue motivada por paréntesis en torno a la asignación que falta). En cambio, escribiría lo siguiente, que en realidad es más corto en términos de caracteres.
int s = foo();
if(s == ERROR)
print_error();
Ésta no es la primera vez que he visto este idioma, sin embargo, y supongo que hay razones históricas (tal vez) para que sea tan frecuente. ¿Cuáles son esas razones?
El estilo anterior tiene mucho más sentido cuando se usa con 'while' en lugar de' if', por ejemplo 'while ((c = getchar())!! = EOF) putchar (c);' – fredoverflow
@FredOverflow, isn ¿Para qué sirve "for"? :) – avakar
No, en absoluto. No hay inicialización ni incremento en el ejemplo anterior que pueda utilizarse en un ciclo 'for'. ¿Cómo se propone embellecer este código con 'for'? – fredoverflow