FC_YSN 发表于 2020-12-4 21:59:31

为啥这个程序可以得出这样的结果

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

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


永恒的蓝色梦想 发表于 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。
按任意键关闭此窗口. . .

jackz007 发表于 2020-12-4 22:13:58

本帖最后由 jackz007 于 2020-12-4 22:20 编辑

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

FC_YSN 发表于 2020-12-4 22:28:17

永恒的蓝色梦想 发表于 2020-12-4 22:03
凭运气,比如我的运行结果是:

我每次都是一样的啊,关了机重试也一样{:5_107:}

风过无痕1989 发表于 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

永恒的蓝色梦想 发表于 2020-12-4 22:44:51

jackz007 发表于 2020-12-4 22:13
int i , a ;
   数组 a 和变量 i 属于相邻变量,当通过 a 访问数组元素的时候,显然已经 ...

说的在理。不过我把顺序颠倒后也没有得到一样的结果。

心驰神往 发表于 2020-12-5 09:03:23

全是1

FC_YSN 发表于 2020-12-5 14:41:30

jackz007 发表于 2020-12-4 22:13
int i , a ;
   数组 a 和变量 i 属于相邻变量,当通过 a 访问数组元素的时候,显然已经 ...

这上面我用的是VC6.0写的,我换了devc++就全是1了。那有没有办法先将数字输入进数组a中,然后再将其中的数字依次打印出来?

jackz007 发表于 2020-12-5 14:44:17

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

       通过循环枚举分别打印就可以啊,怎么,写代码有困难?

FC_YSN 发表于 2020-12-5 14:48:26

jackz007 发表于 2020-12-5 14:44
通过循环枚举分别打印就可以啊,怎么,写代码有困难?

小甲鱼讲的数组的那章不是特别的明白,能写个例子我看看么?谢谢了

jackz007 发表于 2020-12-5 14:59:25

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

#include<stdio.h>
#define num 50
int main()
{
      int i , a                                     ;
      for (i = 0 ; i < num ; i ++) a = 100 + i      ;
      printf("%5d" , a)                               ;
      for(i = 1 ; i < num ; i ++) printf("\t%5d" , a) ;
      printf("\n")                                       ;
}

FC_YSN 发表于 2020-12-5 15:52:29

jackz007 发表于 2020-12-5 14:59


照着你的思路自己又改了些,终于写成了我想要的样子,感谢!!!
页: [1]
查看完整版本: 为啥这个程序可以得出这样的结果