鱼C论坛

 找回密码
 立即注册
查看: 1031|回复: 11

[已解决]为啥这个程序可以得出这样的结果

[复制链接]
发表于 2020-12-4 21:59:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
#define num 50
int main()

{
        int i;
        int a[num];
        for (i = 0;i < 50;i++)
        {
                printf("%d\n",a[num]);
        }
        return 0;
}


最佳答案
2020-12-5 14:59:25
FC_YSN 发表于 2020-12-5 14:48
小甲鱼讲的数组的那章不是特别的明白,能写个例子我看看么?谢谢了

#include<stdio.h>
#define num 50
int main()
{
        int i , a[num]                                     ;
        for (i = 0 ; i < num ; i ++) a[i] = 100 + i        ;
        printf("%5d" , a[0])                               ;
        for(i = 1 ; i < num ; i ++) printf("\t%5d" , a[i]) ;
        printf("\n")                                       ;
}
QVYS$%`Z4OW276Q[~ML9NO6.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-4 22:03:16 | 显示全部楼层
凭运气,比如我的运行结果是:
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

C:\Users\www\source\repos\Project\x64\Release\Project.exe (进程 5900)已退出,代码为 0。
按任意键关闭此窗口. . .
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-4 22:13:58 | 显示全部楼层
本帖最后由 jackz007 于 2020-12-4 22:20 编辑

     int i , a[num] ;
     数组 a 和变量 i 属于相邻变量,当通过 a[num] 访问数组元素的时候,显然已经下标越界了,实际访问到的是后续相邻变量的内容,通过程序的行为不难推测,这个相邻的变量正是 i;要想证实这一点很容易,只要把 a[num] 和 i 两个变量的定义顺序改一下,或者,在两个变量的定义之间,再插入若干个其它变量,然后再观察打印输出结果,应该不难得出结论。
     我这里打印输出和楼主一样,说明我们所使用的编译器相同,楼上打印的是全 0 值,应该和我们所用编译器不同,不过,我想,如果把两个变量的定义顺序颠倒一下,楼上也应该可以得到一样的结果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-4 22:28:17 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-12-4 22:03
凭运气,比如我的运行结果是:

我每次都是一样的啊,关了机重试也一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-4 22:30:05 | 显示全部楼层
本帖最后由 风过无痕1989 于 2020-12-4 22:31 编辑
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
-858993460
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-4 22:44:51 | 显示全部楼层
jackz007 发表于 2020-12-4 22:13
int i , a[num] ;
     数组 a 和变量 i 属于相邻变量,当通过 a[num] 访问数组元素的时候,显然已经 ...

说的在理。不过我把顺序颠倒后也没有得到一样的结果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-5 09:03:23 | 显示全部楼层
全是1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-5 14:41:30 | 显示全部楼层
jackz007 发表于 2020-12-4 22:13
int i , a[num] ;
     数组 a 和变量 i 属于相邻变量,当通过 a[num] 访问数组元素的时候,显然已经 ...

这上面我用的是VC6.0写的,我换了devc++就全是1了。那有没有办法先将数字输入进数组a[num]中,然后再将其中的数字依次打印出来?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-5 14:44:17 | 显示全部楼层
FC_YSN 发表于 2020-12-5 14:41
这上面我用的是VC6.0写的,我换了devc++就全是1了。那有没有办法先将数字输入进数组a[num]中,然后再将其 ...

       通过循环枚举分别打印就可以啊,怎么,写代码有困难?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-5 14:48:26 | 显示全部楼层
jackz007 发表于 2020-12-5 14:44
通过循环枚举分别打印就可以啊,怎么,写代码有困难?

小甲鱼讲的数组的那章不是特别的明白,能写个例子我看看么?谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-5 14:59:25 | 显示全部楼层    本楼为最佳答案   
FC_YSN 发表于 2020-12-5 14:48
小甲鱼讲的数组的那章不是特别的明白,能写个例子我看看么?谢谢了

#include<stdio.h>
#define num 50
int main()
{
        int i , a[num]                                     ;
        for (i = 0 ; i < num ; i ++) a[i] = 100 + i        ;
        printf("%5d" , a[0])                               ;
        for(i = 1 ; i < num ; i ++) printf("\t%5d" , a[i]) ;
        printf("\n")                                       ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-5 15:52:29 | 显示全部楼层

照着你的思路自己又改了些,终于写成了我想要的样子,感谢!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 12:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表