gpt4 book ai didi

c - 为什么编译器不警告我明显的错误?

转载 作者:行者123 更新时间:2023-11-30 18:17:28 25 4
gpt4 key购买 nike

所以,我刚刚研究了数组 Material 并遇到了问题......
我得到以下代码:

int a[5]; 
int i;
for(i=0; i<=10; i++) {
scanf("%d", &a[i]);
}

我在一个数组上声明它的长度为 5。
然后,我运行了一个从 0 到 10 的 for 循环,将数字插入到 a[i] 中。
我使用此表(我创建的)来了解执行期间发生的情况:

看到红色箭头了吗?这就是循环停止的地方,因为 a[] 无法获取超过 5 个值。这意味着 a[6] 不存在。
尽管如此,它仍然不断地询问数字,并不断地将它们保存到数组中。

另一件事是,我目前正在使用 Dev C++ 编译器。

有谁知道为什么会发生?
谢谢!

最佳答案

C 对于数组索引越界检查的约束没有任何标准。

这意味着程序可以随意违反索引规则。由程序员检查数组索引约束。

并且,这将导致未定义的行为。

关于c - 为什么编译器不警告我明显的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33787421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com