情况:
我正在学习速成课程,以熟悉C,并且我注意到本课程的作者可以打印超出数组索引的数组值,并确信该值将是0
每次的。
下面的速成课程中的代码:
int arrayVar[] = {45, 67, 34, 23}; printf("This array index value is %d", arrayVar[4]);
代码输出:
This array index value is 0
根据我的经验,在C的修补/测试过程中,一旦超出数组的最大索引,您将进入未定义的行为范围,任何事情都可能发生,因此他如何对看到一个数组如此自信(正确)?0
每次有价值吗?
如果我打印的值超出了数组的最大索引,我会看到“随机”值(或内存中剩余的值,对吗?)。
为什么我的经验与本课程中看到的不同?这只是C标准的不同吗?还是这表明编译器有所不同?或两者?
环境信息:我正在使用C11标准,并且正在使用ubuntu(位于)默认安装的编译器(我很确定)/usr/bin/cc
。
编辑:对于任何有兴趣了解我所见内容的人,这是课程的链接(您可能会被提示登录Udemy):https ://www.udemy.com/c-fast-crash-course- 简介/学习/讲座/ 12868540#questions
该课程的作者是错误的。
就这么简单。