拥有以下代码。
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。 但它不会改变正确,只有第一个“数据”是正确的,没有别的动作。
答案 0 :(得分:3)
替换此
for (d==29;d>0;d--)
与
for (d=29;d>0;d--)
答案 1 :(得分:1)
你有几个问题。
您应该在=
循环设置中使用for
,而不是==
。
循环不应该从30
开始,而不是29
吗?
我认为你正在向后使用赋值运算符。如果您要将raindays[29]
复制到raindays[28]
,然后将该值传播到raindays[27]
等,则需要使用:
raindays[d - 1] = raindays[d];
不是相反。
在开始复制循环之前,您没有在 raindays[29]
中放置任何。这意味着你只需要复制随机数据,即使你确实做了以上两个修正。
替代答案:
您仍然应该使用=
,而不是==
。
循环仍然在错误的位置开始。
如果您尝试复制 up ,则您的作业声明是正确的,但是:
在开始复制之前,您仍需要在数组中添加。由于您没有显示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;
}