编写了一个程序,此程序可以输入10个整数值,(用到了阵列),然后再定义一个范围,程序的最后会显示出在10个整数值内,符合此范围的数字,但是最后总会莫名奇妙出现一个9,不知为什么?
#include <stdio.h>
int main (){
int i,n[9],x,t;
for(i=0;i<=9;i++){
scanf("%d", &n[i]);
}
printf("x is: ");
scanf("%d",&x);
printf("t is: ");
scanf("%d",&t);
for(i=0;i<10;i++){
if(n[i] >= x && n[i] <= t){
printf("%d\n",n[i]);
}
}
return 0;
}
n[9]
,这个数组只分配了 9 个 int 空间,但是for (i = 0; i < 10; i++)
一共是 0 ~ 9 共访问了 10 个元素,肯定有一个是越界。当然 C++ 不会检查越界,它会按地址去取个值出来,只不过这个值谁也不清楚会是什么,这次可能是 9,明天也许就是 128 了。顺便说一下,声明
n[9]
是n[0]
到n[8]
共 9 个元素。