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条回答
200900301001
1楼-- · 2019-07-15 17:21
是不是你在定义时,没有给 j 赋值,所以j是任意值,从watch中看j=45,应该是没有执行 j= i+6*(rxno-1);吧
Aidaohuakai
2楼-- · 2019-07-15 20:17
你这程序有可能不能通过编译,因为定义变量不能在函数中间处定义,只能在函数开头处定义,你在for循环中定义,for每循环一次就定义变量j一次,你这里重复定义了6次变量j,这样不就是重复定义了?
Aidaohuakai
3楼-- · 2019-07-15 21:34
 精彩回答 2  元偷偷看……
cjwandwy
4楼-- · 2019-07-15 22:36
感谢分享 顶一个

一周热门 更多>