未åˆå§‹åŒ–的数组å˜é‡å‘生了什么?

时间:2014-05-31 15:24:11

标签: c

#include<stdio.h>

int main(void)
{
    int a[3]={1,2,3};
    printf("%d",a[4]);
}

å³ä½¿æˆ‘没有åˆå§‹åŒ–[4],该程åºçš„输出也为0。作为一个åˆå§‹åŒ–的数组,如果我å°è¯•å®ƒï¼Œæˆ‘应该得到一个错误。

å¯èƒ½æ˜¯ä»€ä¹ˆåŽŸå› ï¼Ÿ

2 个答案:

答案 0 :(得分:4)

您正在阅读超出数组末尾的内容。它碰巧的值为零。当你这样åšæ—¶ä¼šå‘生什么,这是由c语言定义的。在这ç§æƒ…况下,您的编译器和è¿è¡Œæ—¶å¯ä»¥æ‰§è¡Œä»»ä½•æ“作,包括返回0或给出错误。

答案 1 :(得分:1)

å•è¡Œï¼šç»“果将是ä¸ç¡®å®šã€‚

6.7.9åˆå§‹åŒ–(p10):

  

如果没有显å¼åˆå§‹åŒ–具有自动存储æŒç»­æ—¶é—´çš„对象,则其值为   的ä¸ç¡®å®šå³å¯ã€‚

3.19.2:ä¸ç¡®å®šå€¼

  

未指定的值或陷阱表示