c - 为什么这段代码会超出范围?

标签 c arrays

这是我前几天在采访中遇到的一个问题,有人能告诉我这个“简单”代码背后的“真相”吗?

#include<stdio.h>
int main()
{
    int a[]={1,2,3};
    for(int i=0; i<=3; i++){
        a[i]=0;
        printf("%d\n", i);
    }
    return 0;
}

最佳答案

如果将 <= 替换为 <,一切都会正确,因为它会导致数组越界索引错误并将打印值 0 1 2 3 虽然数组内容的值每次都会为0

关于c - 为什么这段代码会超出范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39774244/

相关文章:

c - 如何在单维字符指针数组中存储值

c# - C# 中的列表切片

Java 在同一行打印带有分隔符的数组

c - 如何从 C 中的 char 数组中释放内存

c - 随机化在c中打印什么字符串

c - 使用 char 时双重释放或损坏**

c - 在 C 中递增指针数组

java - 在java数组中查找重复单词并返回具有唯一重复单词的数组 - 使用方法

python - 确定 numpy 数组的 2 个(垂直或水平)相邻元素是否具有相同值的最快方法

c - scanf() 的变体