| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 970 人关注过本帖
标题: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
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:10 
这三个问题的回答都一样:
    因为数组溢出属于“未定义行为”
2017-09-20 16:45
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10538
专家分:42927
注 册: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
快速回复:C语言越界问题
数据加载中...
 
   



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

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