|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
int main ()
{
int a [6] = {1, 2, 3, 4, 5,6};
int i;
for (i=0; i<5; ++i)
printf("%d\n",a[i]);
printf("%d\n",a[6]);
return 0;
}
输出的结果是1 2 3 4 5 5
a[6]超出数组定义,应该是无效值,为什么加了for语句,输出的结果是5,请教大家,谢谢
既然数组越界访问是未定义行为,那么不能输出几?不能输出 5 ?为什么?
既然都未定义行为了还有不能这么一说?
- $ cat main.c
- #include <stdio.h>
- int main ()
- {
- int a [6] = {1, 2, 3, 4, 5,6};
- int i;
- for (i=0; i<5; ++i)
- printf("%d\n",a[i]);
- printf("%d\n",a[6]);
- return 0;
- }
- $ gcc -g -Wall -o main main.c
- $ ./main
- 1
- 2
- 3
- 4
- 5
- 680017920
- $ ./main
- 1
- 2
- 3
- 4
- 5
- 412153344
- $ ./main
- 1
- 2
- 3
- 4
- 5
- -37150208
- $ ./main
- 1
- 2
- 3
- 4
- 5
- 1624091904
- $ ./main
- 1
- 2
- 3
- 4
- 5
- 1042244352
- $ ./main
- 1
- 2
- 3
- 4
- 5
- 1974735360
- $
复制代码
|
|