代码之家  ›  专栏  ›  技术社区  ›  Bob5421

关于阿杜诺巨无霸的奇怪计算

  •  0
  • Bob5421  · 技术社区  · 6 年前

    看看这个非常基本的Arduino程序:

    long pos = 90 * 1023/360;
    Serial.println(pos);
    

    它应该显示255,但显示73。我不明白为什么。

    这个程序在Arduino Mega上运行。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Delta_G    6 年前

    因为等号右边的所有东西都是int大小的,所以数学是在int大小的框中完成的。第一步是乘以90*1023,结果溢出int。您必须告诉编译器在右边使用long,方法是强制使其中一个数字变长:

    long pos = 90L * 1023/360;