Вот одна ошибка:
void main () {
должно быть
int main (int argc, char** argv) {
Еще одна ошибка в вашем цикле.Вы пишете после конца массива a
, и если ваш компилятор поместил j
в память сразу после a
(что, как я полагаю, зависит от вашего вопроса), тогда доступ к массиву за пределами допустимого диапазона фактически завершитсядо присвоения значения j
.Следовательно, когда вы записываете 10
в a[10]
(которого не существует), вы записываете его в память, где живет j
(в результате чего это действует как j = 10
).Однако это поведение зависит от того, как ваш компилятор размещает переменные в памяти, поэтому вы можете очень хорошо увидеть другое поведение, если вы скомпилировали одну и ту же программу на другой платформе.