有以下代码。
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。
但它不会正确移动,只有第一个“数据”是正确的,其他的都不会移动。
最佳答案
你有几个问题。
您应该在=
循环设置中使用for
,而不是==
。
循环不应该从30
开始,而不是从29
开始吗?
我想你是在反向使用赋值运算符。如果要将raindays[29]
复制到raindays[28]
,然后将该值传播到raindays[27]
,则需要使用:
raindays[d - 1] = raindays[d];
不是相反。
在开始复制循环之前,您不会在
raindays[29]
中放入任何内容。这意味着你只需要复制随机数据,即使你做了以上两个修正。备选答案:
您仍然应该使用
=
,而不是==
。循环仍然从错误的地方开始。
如果你试图复制,你的作业陈述是正确的,但是:
在开始复制之前,仍然需要在数组中放入一些内容。因为您还没有显示
raindays
的定义,所以很难说这是否重要。关于c - 存储阵列问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14548960/