学习C,对数组元素限制感到困惑

时间:2018-12-30 15:09:30

标签: c arrays limit compiler-warnings

我正在学习C语言,并在MacOSX上使用CodeBlocks编写和构建我的测试脚本。讲师说,一旦使用varname [limitInt]进行设置,就无法增加数组的元素。

但是,我有以下内容:

#include <stdio.h>
int main() {
    int num[4] = {1,2,3,4,5};
    int n = 5;
    num[n] = 6;
    num[6] = 7;
    for(n=0;n<10;n++) {
        printf("%d\n",num[n]);
    }
}

建筑物显示有关数组初始化器中多余元素的警告,并且数组索引6超出数组末尾。但是我并没有停止...构建可以正常工作,并且我可以运行以下结果:

1
2
3
4
-353028040
6
7
-1687410582
-353028040
32766

尽管它确实抛出[1]并中止运行,但它仍然运行。

这就是我的想法:

  1. 我正在使用的编译器不会执行此操作,但是应该执行。
  2. 我的老师不应该使用“永远不能扩展数组”之类的语言,因为从我的测试中可以明显看出(当然,只有忽略忽略并返回1到stdout时)。

对于1:有没有办法用这些类型的警告来进行失败?也许使用其他编译器?

对于2:如果C允许它扩展,但返回1,有人可以向我描述原因吗?

0 个答案:

没有答案