C 什么决定是否发生分段错误?

C 什么决定是否发生分段错误?,c,C,上面的代码在不应该的情况下可以正常工作。为什么呢?这种行为可能使在程序中查找潜在的bug变得非常棘手。像这样的越界数组访问行为是未定义的 未定义的行为可以表现为程序按预期工作 这确实使C语言的编程变得棘手,而且该语言在这方面的不安全性招致了批评,比照同时代成长起来的FORTRAN。通过采用自20世纪70年代C语言发明以来发展起来的适当编程实践,可以在某种程度上避免这种有害行为。边界检查软件也被发明出来,它将清除类似这样的错误。什么时候不应该->否。这是未定义的行为。这可能有效,也可能无效。 #i

上面的代码在不应该的情况下可以正常工作。为什么呢?这种行为可能使在程序中查找潜在的bug变得非常棘手。

像这样的越界数组访问行为是未定义的

未定义的行为可以表现为程序按预期工作


这确实使C语言的编程变得棘手,而且该语言在这方面的不安全性招致了批评,比照同时代成长起来的FORTRAN。通过采用自20世纪70年代C语言发明以来发展起来的适当编程实践,可以在某种程度上避免这种有害行为。边界检查软件也被发明出来,它将清除类似这样的错误。

什么时候不应该->否。这是未定义的行为。这可能有效,也可能无效。
#include <stdio.h>
int main()
{    
    int array[10];
    array[50] = 5;
    printf("array[50] = %i \n", array[50]);
}