存储的数组问题

时间:2013-01-27 15:37:40

标签: c pic

拥有以下代码。

unsigned char raindays[31];
void midnat(void)   //thing to do at midnight. shift of date.
{
    int d;
    week_day++;
    if (week_day==7) week_day=0;
        r_regn=r_regn+today_rain;


    for (d==29;d>0;d--)
    {
        raindays[d]=raindays[d-1];
    }

    raindays[0]=0;


//  d--;


    raindays[30]=today_rain;
    today_rain=0;

}

但“数据”不是正确的。 我希望“raindays [29]”的数据能够从raindays中获取价值[28] 并降至0。 但它不会改变正确,只有第一个“数据”是正确的,没有别的动作。

3 个答案:

答案 0 :(得分:3)

替换此

for (d==29;d>0;d--)

for (d=29;d>0;d--)

答案 1 :(得分:1)

你有几个问题。

  1. 您应该在=循环设置中使用for,而不是==

  2. 循环不应该从30开始,而不是29吗?

  3. 我认为你正在向后使用赋值运算符。如果您要将raindays[29]复制到raindays[28],然后将该值传播到raindays[27]等,则需要使用:

    raindays[d - 1] = raindays[d];
    

    不是相反。

  4. 在开始复制循环之前,您没有在 raindays[29]中放置任何。这意味着你只需要复制随机数据,即使你确实做了以上两个修正。

  5. 替代答案:

    1. 您仍然应该使用=,而不是==

    2. 循环仍然在错误的位置开始。

    3. 如果您尝试复制 up ,则您的作业声明是正确的,但是:

    4. 在开始复制之前,您仍需要在数组中添加。由于您没有显示raindays的定义,因此很难说这是否重要。

答案 2 :(得分:0)

试试这个:

void midnat(void)  //thing to do at midnight. shift of date.
     {int d;
     week_day++;
    if (week_day==7) week_day=0;
    r_regn=r_regn+today_rain;


    for (d=30;d>0;d--)
{
    raindays[d-1]=raindays[d];

 }
   raindays[0]=0;


    //  d--;


     raindays[30]=today_rain;
    today_rain=0;

     }