作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以,我刚刚研究了数组 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/
通常当我请求线程转储时,系统性能不佳的症状很容易解释;也就是说,通常我会看到许多线程显然正在等待一个已被获取但未被另一个释放的监视器。 在这种情况下,我有很多线程在等待监视器 (0x965ad100)
C:\Users\shagy\Desktop\3RD YEAR 2ND SEMESTER\SPM\Newfolder\SPM-SMS>npm start npm ERR! path C:\Users\
我是一名优秀的程序员,十分优秀!