与Arduino Uno一起使用

时间:2017-12-11 20:50:32

标签: arduino int 16-bit

我试图取一个介于100,000到10,000之间的数字,并将每个单独的数字推入队列。

我使用模数函数来做到这一点。但是,我遇到了Uno的16位整数问题,上限为32,767。我已经尝试使用长整数,无符号整数和无符号长整数,但程序仍然只在32,767之后将0推到队列中。我应该尝试使用char / string方法,还是我错过了一个解决方案?

void fill_que(unsigned int b) {
  int price = b;
  while(price > 0) {
    queue.push(price%10);
    Serial.print(price%10);
    price/=10;
  }
}

int main() {
  unsigned int price1 = 36111;
  fill_que(price1);
}

1 个答案:

答案 0 :(得分:2)

我会猜测并说,您忘记更改变量price的类型。

应该是:

void fill_que(unsigned long b)
{
  unsigned long price = b;
  while(price > 0)
  {
    queue.push(price%10);
    Serial.print(price%10);
    price/=10;
  }
}

int main()
{
  unsigned long price1 = 36111;
  fill_que(price1);
}