Недавно я начал изучать C, и я занимаюсь классом с C в качестве темы. Я сейчас играю с циклами, и я сталкиваюсь с каким-то странным поведением, которое я не знаю, как объяснить.
#include <stdio.h>
int main()
{
int array[10],i;
for (i = 0; i <=10 ; i++)
{
array[i]=0; /*code should never terminate*/
printf("test \n");
}
printf("%d \n", sizeof(array)/sizeof(int));
return 0;
}
На моем ноутбуке под управлением Ubuntu 14.04 этот код не сломается. Он заканчивается. На моем школьном компьютере, работающем с CentOS 6.6, он также отлично работает. В Windows 8.1 цикл никогда не завершается.
Что еще более странно, когда я редактирую условие цикла for
: i <= 11
, код заканчивается только на моем ноутбуке под управлением Ubuntu. Он никогда не заканчивается в CentOS и Windows.
Может ли кто-нибудь объяснить, что происходит в памяти и почему разные ОС, работающие с одним и тем же кодом, дают разные результаты?
EDIT: Я знаю, что цикл for выходит за пределы. Я делаю это намеренно. Я просто не могу понять, как поведение может быть различным для разных ОС и компьютеров.