标题:C语言越界问题
只看楼主
跆拳勇士
Rank: 1
等 级:新手上路
帖 子:29
专家分:9
注 册:2017-7-21
结帖率:100%
已结贴  问题点数:18 回复次数:2 
C语言越界问题
#include<stdio.h>
int main()
{
    int data[5];
    int i;
    for(i=0;i<=100;i++)
    {
        data[i]=i;
        printf("%d\n",data[i]);
    }
    return 0;
}
第一个疑问:已经越界了,但这个程序依然编译成功并且运行时不报错,这是为什么呢
第三个疑问:当i的值在5到17的时候,编译成功,但是运行报错,一旦大于17,编译跟运行都不报错,为什么呢;
第二个疑问:data[i]最终结果到52就停止了,为什么不能大于52。
搜索更多相关主题的帖子: 越界 data 编译 运行 报错 
2017-09-20 16:14
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
这三个问题的回答都一样:
    因为数组溢出属于“未定义行为”
2017-09-20 16:45
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:8 
回复 楼主 跆拳勇士
这样看看,a的后果可能好严重。
#include<stdio.h>
int main()
{
    int a=9999;
    int data[5];
    int i;
    for(i=0;i<=5;i++)
        data[i]=i;
    printf("a=%d\n", a);
    return 0;
}
2017-09-20 16:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-480830-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.195267 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved