Eu também sou iniciante em C. Pelo que entendi existe padrões usados pelos compiladores. Nesse caso do Mingw/GCC, ele não aceita a declaração e inicialização de uma variável dentro de um for como:
for (int i = 0; i < 3; i++)
teríamos que fazer:
int i;
for( i = 0; i < 3; i++) ;
Talvez por isso que para rodar o primeiro código for (int i = 0; i < 3; i++) seja preciso utilizar o seguinte parâmetro:
gcc -std=c99. Caso queira compilar sem utilizar o parâmetro deve ser feita a declaração fora do for.
Vi que o professor Mauricio está utilizando o Mac OS X, nesse caso compila normal. Tentei no Windows e no Linux e ele apresentou o mesmo erro.
Pesquisei um pouco e encontrei a estrutura do for no livro C Completo e Total e no livro [Treinamento em Linguagem C](Link: http://www.amazon.com.br/dp/8576051915). Em ambos a variável está sendo declarada fora do for.
Isso é o pouco que sei a respeito desse assunto, talvez o professor
Maurício Aniche possa esclarecer melhor.
Abraços.