我最近开始学习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;
}
在我运行Ubuntu14.04的笔记本电脑上,这段代码不会中断.它将完成.在我学校运行CentOS 6.6的计算机上,它也运行良好.在Windows 8.1上,循环永远不会终止.
更奇怪的是,当我将for
循环的条件编辑为:i <= 11
时,代码只在运行Ubuntu的笔记本电脑上终止.它永远不会在CentOS和Windows中终止.
有人能解释内存中发生了什么,以及为什么运行相同代码的不同操作系统会产生不同的结果吗?
编辑:我知道for循环超出了范围.我是故意的.我只是不明白不同的操作系统和计算机之间的行为会有什么不同.