无符号整型变量溢出会导致什么结果?

  while(1)
  {
    if ((uint16_t)(gSysTick - currentTick) >= 1)
    {
      currentTick = gSysTick;
      CheckRecDatum(1);//
      SendDatum();
      OutputErrorIndex();
    }
  }

//1ms中断
void Timer0ISR(void) interrupt 1
{
  #define kGasTime   (uint16_t)(16.6*1000)  
  TF0 = 0;   
  TL0 = (uint8_t)((0xbf27) & 0xff);  //((65535-kGasTime)&0xff);
  TH0 = (uint8_t)((0xbf27) >> 8);  //((65535-kGasTime)>>8);
  gSysTick++;
}

比如上面这一段代码,gSysTick每1ms增加一次,同时赋值给currentTick(currentTick初始值为0),那么当gSysTick增加到255时,currentTick应等于254,如果gSysTick再增加一次不就变成0了吗?那么while中的if语句是不是就无法判断了呀?

这段代码是不是写的就有问题了?

你好,我是有问必答小助手。为了技术专家团更好地为您解答问题,烦请您补充下(1)问题背景详情,(2)您想解决的具体问题,(3)问题相关代码图片或者报错信息。便于技术专家团更好地理解问题,并给出解决方案。

您可以点击问题下方的【编辑】,进行补充修改问题。