我希望这会崩溃,但事实并非如此

are*_*vee 0 c arrays string

我是一个80年代的老黑客,我手上有一些空闲时间以为我会'C'大惊小怪

(我的背景是Forth,它做的事情回到了前面所以我学到很多关于强迫很多错误的事情)

在这种情况下,我设置了一个小数组,我认为它将是3个元素(0,1,2)

如果我运行编译,我本以为我会遇到越界错误,但是没有 - 它编译好了并且运行得很甜蜜

这一点并不急,但这对于那个小秃头来说并不好用.


int main()
{
    char members[3][16];  // 3 elements, each 15 char long plus null

    printf("\n enter something..  ");
    scanf( "%s", members[4]);

    printf("\n and something else..  ");
    scanf( "%s", members[5]);

    printf(" %s  ", members[4]);
    printf(" %s\n", members[5]);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Oli*_*rth 5

访问数组越界会调用未定义的行为.这意味着任何事情都可能发生,包括没有任何明显错误的运行.