c语言改错求助,跪谢!
问题描述:
int array[]={23,34,12,17,204,99,16};
#define TOTAL_ELEMENTS (sizeof(array)/sizeof(array))
main()
{
int d=-1,x;
if(d<=TOTAL_ELEMENTS-2)
x=array[d+1];
return 0;
}
参考答案:1、
#define TOTAL_ELEMENTS (sizeof(array)/sizeof(array))
改成
#define TOTAL_ELEMENTS (sizeof(array)/sizeof(int))
这样才有“ELEMENT总数”的含义
2、后面的错误更加隐蔽:
d是有符号数,但是TOTAL_ELEMENTS是无符号数,C中这种情况会统一转换成无符号数比较,所以d->0xFFFF一定大于TOTAL_ELEMENTS-2的,所以那个条件被判断为非,最终的x是不确定的数。