Почему при переопределении статической глобальной переменной возникает ошибка времени компиляции, а при переопределении глобальной переменной нет?

Компиляция кода 1 дает ошибку « i redefined », но код 2 не показывает аналогичной ошибки. Почему это так?

Код 1

static int i;        //Declaring the variable i.
static int i=25;     //Initializing the variable.
static int i;        //Again declaring the variable i.
int main(){       
    return 0;
}

Код 2

int i;        //Declaring the variable i.
int i=25;     //Initializing the variable.
int i;        //Again declaring the variable i.
int main(){       
    return 0;
}
7
задан Jonathan Leffler 27 August 2011 в 19:18
поделиться