使用局部变量遇到的怪现象

2020-02-05 09:27发布

我在一个函数定义了2个局部变量,这2个变量只在下面的语句应用,其中有“temp”这个变量正常,"Turn_Timer"这个变量不正常,没加最后一句之前始终无法进入里面对“Turn_Count”进行累加,加了“ Real_Speed00=Turn_Timer;”这后就正常了,或者将"Turn_Timer"设为全局变量就正常了,请问这是怎么回事?
void send_real_speed(void)    //这个函数是1毫秒调用一次的
{
    u8 temp,Turn_Timer;
   Turn_Timer++;
   if(Turn_Timer>Set_Turn_Period)    //Set_Turn_Period的值为30-100之间
  {
        Turn_Timer=0;                         //始终无法满足条件进入这里
        Turn_Count++;
   }
   if(Left_Speed_Band>0)temp=Display_Set_Speed[Left_Speed_Band-3];
   if(Left_Speed_Band<0)temp=Display_Set_Speed[-Left_Speed_Band-3];
   if(Left_Speed_Band==0)temp=0;
   Real_Speed=temp/10;
   Real_Speed0=temp%10;
   Real_Speed00=Turn_Timer;     //只有加入这句“Turn_Timer”这个变量才正常。
}  
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
jackybany
1楼-- · 2020-02-06 03:55
 精彩回答 2  元偷偷看……
liweiqiang668
2楼-- · 2020-02-06 09:45
szzyq 发表于 2012-5-8 10:35
明白了,Turn_Timer的值调用完后又被清零了,所以无法满足条件,但为什么加了Real_Speed00=Turn_Timer;就可 ...

"明白了,Turn_Timer的值调用完后又被清零了,所以无法满足条件"
樓主,你這句解釋是否錯誤,Turn_Timer里的值被清0后,前面的Turn_Timer++應該是重新再計數,所以條件應該是成立的.

一周热门 更多>