#include<stdio.h>
int main(void)
{
int a[3]={1,2,3};
printf("%d",a[4]);
}
这个程序的输出是0,即使我没有初始化a[4]。作为一个已初始化的数组,如果我尝试访问它,应该会得到一个错误。
这可能是什么原因呢?
您正在读取超出数组末尾的内容。它的值恰好是0。当您这样做时会发生什么是由c语言未定义的。在这种情况下,编译器和运行时可以做任何他们想做的事情,包括返回0或给你一个错误。
单行:结果将是indeterminate
6.7.9 Initialization (p10):
如果没有显式初始化具有自动存储持续时间的对象,则其值为不定 .
3.19.2:不确定值
一个未指定的值或一个陷阱表示