0
问答首页 最新问题 热门问题 等待回答标签广场
我要提问

请教各位达人程序问题!(红色部分的作用)

#define N       3
unsigned char p = 0;                            //队列指针
unsigned short buff[~((~0)<unsigned short sum = 0;                                   //初始和值
unsigned short aver = 0;                                  //初始平均值
unsigned short ADresult;                                  //保存AD采样结果

void TEST(void)
{

while(1)
{
        getad(&ADresult);                       //取得本次采样结果
        sum -= buff[p];                         //本句及下句,替换环形队列以及和值中最早的一个值
        sum += (buff[p]=ADresult);
        aver = (sum + (1<<(N-1)))>>N;           //移位代替除法求平均,整数运算,带四舍五入处理
        p++;                                    //队列指针移动
        p &= (unsigned char)(~((~0)<}
}
提问者:玩cool的girl 地点:- 浏览次数:8090 提问时间:03-05 05:40
我有更好的答案
提 交
4条回答
Lotus_Ching 03-11 18:17
sum 减去buff里面 第p个数组的内容
nowna 03-10 14:26
为什么要这样写
sum -= buff[p];                        //感觉这行是多余的
sum += (buff[p]=ADresult);

而不这样写sum += (buff[p]=ADresult);
DreamForfuture 03-12 18:31
有必要的,不然sum会越来越大,把以前所有的结果都累加了。你一测试,就应该看出来了。
smileto1211 03-06 01:54
buff[p]=ADresult执行在前……
撰写答案
提 交
1 / 3
1 / 3