为什么编译器没有警告我一个明显的错误?

rol*_*ory -2 c

所以,我刚研究了Arrays材料并遇到了问题......
我得到了以下代码:

int a[5]; 
int i;
for(i=0; i<=10; i++) {
    scanf("%d", &a[i]);
}
Run Code Online (Sandbox Code Playgroud)

我在一个数组上声明它的长度为5.
然后,我运行了一个for从0到10 的循环,插入数字a[i].
我使用这个表(我创建的)来了解执行期间发生的事情:

你看到红色箭头?这就是她停止循环的地方,因为它们a[]不能获得超过5个值.这意味着,那a[6]不存在.
尽管如此,它一直在询问数字,并不断将它们保存到数组中.

还有一件事,我目前正在使用Dev C++编译器.

有谁知道为什么会这样?
谢谢!

Am_*_*ful 5

C对数组索引超出绑定检查的约束没有任何标准.

这意味着程序可以自由地违反索引规则.程序员可以检查数组索引约束.

并且,这将导致未定义的行为.