Declare variables locales C89 al comienzo del alcance?

Intenté hacer esto en ANSI C:

include <stdio.h>
int main()
{
    printf("%d", 22);
    int j = 0;
    return 0;
}

Esto no funciona en MicrosoftVisual C ++ 2010 (en un proyecto ANSI C). Obtiene un error:

error C2143: syntax error : missing ';' before 'type'

Esto funciona:

include <stdio.h>
int main()
{
    int j = 0;
    printf("%d", 22);
    return 0;
}

Ahora leo en muchos lugares donde debe declarar variables al comienzo del bloque de código en el que existen las variables. ¿Es esto generalmente cierto para ANSI C89?

Encontré muchos foros donde la gente da este consejo, pero no lo vi escrito en ninguna fuente 'oficial' comoGNU C manual.

Respuestas a la pregunta(6)

Su respuesta a la pregunta