每日一题(43)—— 数组越界

来源:互联网 发布:阿里云已备案域名 编辑:程序博客网 时间:2024/06/05 03:41

下面这个程序执行后会有什么错误或者效果:

#define  MAX  255int main(){    unsigned char A[MAX],i;    for (i=0;i<=MAX;i++)    {        A[i]=i;    }}







解答:死循环加数组越界访问(C/C++不进行数组越界检查)

MAX=255

数组A的下标范围为:0..MAX-1,这是其一..

其二.当i循环到255时,循环内执行:

A[255]=255;

这句本身没有问题..但是返回for (i=0;i<=MAX;i++)语句时,

由于unsigned char的取值范围在(0..255),i++以后i又为0了..无限循环下去.