MCU中一个简单的数值运算出现的奇怪问题

2019-07-15 16:40发布

先贴上程序
                        unsigned char i;
                        for(i=0;i<6;i++)
                           {
                                   unsigned char j;
                                   j= i+6*(rxno-1);
                                   ClusterData[j] = RxBuf;
                           }
问题描述:
断点设置在j= i+6*(rxno-1);此句上
rxno=3;
i=1;
执行完j= i+6*(rxno-1);从watch中看j=45,按理说应该是13,差了32
执行完ClusterData[j] = RxBuf;后j变成了需要的13
然后i=2
执行完j= i+6*(rxno-1);从watch中看j=46,按理说应该是14,差了32
执行完ClusterData[j] = RxBuf;后j变成了需要的14
依次类推。。。
最后无奈只有把语句改成j= i+6*(rxno-1)-32才达到目的

但还是想找到原因。。。哪里出了问题
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
Aidaohuakai
2019-07-15 20:17
你这程序有可能不能通过编译,因为定义变量不能在函数中间处定义,只能在函数开头处定义,你在for循环中定义,for每循环一次就定义变量j一次,你这里重复定义了6次变量j,这样不就是重复定义了?

一周热门 更多>