static修饰的局部变量问题

2019-10-16 01:03发布

step被static所修饰,刚开始step可以从0->1->2这几个步骤都没有问题,执行完step = 3语句,即将退出函数(在下面1处)step 的值莫名其妙的变回2,step变量只有这个地方使用,这个是什么问题???大神们帮忙分析一下什么问题!!!!!
如下程序:
void display()
{
  static u8  step = 0;
      if(step == 0)
  {
        ........
        step = 1;
    }
    else if(step == 2)
    {
         .......
         step = 1;
    }
    else if(step == 3)
    {
        .........
        step = 4;
    }
}   -------------<1

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
雪飞舞舞舞
1楼-- · 2019-10-16 03:22
step == 2下面是step = 3,不是等于1
    else if(step == 2)
    {
         .......
         step = 3;
    }
hyghyg1234
2楼-- · 2019-10-16 07:04
根据你的描述看不出来什么问题,你这段代码要实现什么功能,感觉比较奇怪。
雪飞舞舞舞
3楼-- · 2019-10-16 08:56
这个就是一些状态切换来的,我也感觉很奇怪,莫名出现这个问题,但是把他声明成全局变量就没有问题
雪飞舞舞舞
4楼-- · 2019-10-16 10:32
上面少了一个
else if(step == 1){
     step = 2;

这几条语句
正点原子
5楼-- · 2019-10-16 10:57
 精彩回答 2  元偷偷看……

一周热门 更多>