鱼C论坛

 找回密码
 立即注册
查看: 3746|回复: 6

初学者问个小问题

[复制链接]
发表于 2013-3-2 15:59:27 | 显示全部楼层 |阅读模式

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

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

x
#include "stdio.h"
main ()
{
  int a[10],i;
  for (i=0;i<10;)
  {
    a[i++]=i;
        printf ("%3d",a[i]);           //这次怎么会出随机数
  }
  printf ("\n");
  for (i=0;i<10;i++)
          printf ("%3d",a[i]);       //这次是0 1 2 3 4 5 6 7 8 9
  printf ("\n");
  for (i=0;i<10;)
  {
    a[++i]=i;
        printf ("%3d",a[i]);        //这次是 1 2 3 4 5 6 7 8 9 10
  }
  for (i=0;i<10;i++)
          printf ("%3d",a[i]);    //这次是0 1 2 3 4 5 6 7 8 9
}
我就是搞不明白为什么 第一次a[i]会出现的是随机数

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-2 18:44:05 | 显示全部楼层
本帖最后由 huise865 于 2013-3-2 19:09 编辑

#include "stdio.h"
main ()
{
   int a[10],i;
   for (i=0;i<10;)
   {
     a[i++]=i;
         printf ("%3d",a[i]);           //这次怎么会出随机数  ,此时i等于1,因为a[1]未赋值,所以是随机数
  }
   printf ("\n");
   for (i=0;i<10;i++)
           printf ("%3d",a[i]);       //这次是0 1 2 3 4 5 6 7 8 9   这次对了
   printf ("\n");
   for (i=0;i<10;)
   {
     a[++i]=i;
         printf ("%3d",a[i]);        //这次是 1 2 3 4 5 6 7 8 9 10   ++i?你准备这样a[1] = 1赋值?
   }
   for (i=0;i<10;i++)
           printf ("%3d",a[i]);    //这次是0 1 2 3 4 5 6 7 8 9
}





===============================================
#include "stdio.h"
main ()
{
   int a[10],i;
   for (i=0;i<10;i++)
   {
     a[i]=[i];      //这里改了
         printf ("%3d",a[i][i]);         
  }
   printf ("\n");
   for (i=0;i<10;i++)
           printf ("%3d",a[i][i]);      
   printf ("\n");
   for (i=0;i<10;i++)
   {
     a[i]=[i];        //这里改了
         printf ("%3d",a[i][i]);      
   }
   for (i=0;i<10;i++)
           printf ("%3d",a[i][i]);   
}

@小甲鱼         

有的字符显示不了啊,bug~~~~
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-2 22:23:20 | 显示全部楼层
我晕了,还是不明白
main()
{int a[10],i;
        for (i=0;i<10;)
    {
                a[i++]=i;
        printf ("a[%d]=%d",i,a[i]);
    }
    printf ("\n");
    for (i=0;i<10;i++)
    printf ("a[%d]=%d",i,a[i]);
    return 0;
}
你说开始是此时i等于1,因为a[1]未赋值,所以是随机数.
那后面重新输出怎么又对了。后面没有重新赋值呀
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-2 22:53:39 | 显示全部楼层
stdio.h 应该用<>括起来吧
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-3 07:57:45 | 显示全部楼层
""和<>是一样的。没人解说下吗/
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-4 13:55:46 | 显示全部楼层
a[i++]=i;
或者
a[++i]=i;
这样的写法是错误的
未定义行为 结果不可靠
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-6 15:57:51 | 显示全部楼层
#include "stdio.h"
main ()
{
  int a[10],i;
  for (i=0;i<10;)
  {
//就举第一次循环来说
    a[i++]=i;      //此时 a[0]=0; i=1
        printf ("%3d",a[i]);           //这次怎么会出随机数 //此时i=1 , 你打印的是a[1],但事实上a[1]还未赋值  }
  printf ("\n");
  for (i=0;i<10;i++)
          printf ("%3d",a[i]);       //这次是0 1 2 3 4 5 6 7 8 9
  printf ("\n");
  for (i=0;i<10;)
  {
    a[++i]=i;
        printf ("%3d",a[i]);        //这次是 1 2 3 4 5 6 7 8 9 10
  }
  for (i=0;i<10;i++)
          printf ("%3d",a[i]);    //这次是0 1 2 3 4 5 6 7 8 9
}
如果你用GDB调试一下 就很清楚了!!
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-8-10 16:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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