数组越界也可以这么巧~~~

看这个斐波那契数列,错误来源:wdy

#include<iostream>
#include<iomanip>
using namespace std;

int main(){
    int i,m;
    int a[20];
    m=0;

    //cout<<"m = "<<m<<endl;

    a[0]=a[1]=1;
    for(i=2;i<=20;i++)//此处越界
        a[i]=a[i-1]+a[i-2];

    //cout<<"m     = "<<m<<endl;//m的值竟然变了,怎么貌似一个数呢
    //cout<<"a[20] = "<<a[20]<<endl;//竟然等于a[20]

    //cout<<&m<<endl;
    //cout<<&a[20]<<endl;//a[20]竟然就是m

    for(i=0;i<20;i++){
        m++;
        cout<<setw(8)<<a[i];
        //cout<<" m = "<<m;
        if(m%5==0)cout<<endl;
    }

    return 0;
}

结果:

为什么第一行少一个。。。

把代码中注释全开:

都是越界惹得祸,,,a[20]就是m。m的值改变了,所以输出有误。

原文地址:https://www.cnblogs.com/gongpixin/p/4795960.html