首页 > 代码库 > 数组越界但是用scanf不报告段错误

数组越界但是用scanf不报告段错误

   {        int N;
        int a[100]={1};                 //先初始赋值100年的奶牛数量为1
                                        //定义第N年
        a[0]=0;a[1]=1;a[2]=1,a[3]=1;                     //给数组前四个元素赋值即前四年的奶牛数量都为1
        int counter=4;
        for(;counter<=100;counter++)
            {

            a[counter]=a[counter-1]+a[counter-3];          //第四个元素后数组各个元素的关系
            }

        while(scanf("%d",&N))                        //循环输入第N年
        {
            printf("%d\n",a[N]);
        }
        
    }

数组a是100长度,但是序号counter<=100,明显越界。如果取消scanf就会出现段错误提示(运行时候的事情)

数组越界但是用scanf不报告段错误