首页 > 解决方案 > Arduino Mega 上的奇怪计算

问题描述

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

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

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

该程序在 Arduino Mega 上运行。

标签: c++arduino

解决方案


因为等号右边的所有东西都是 int 大小的,所以数学是在一个 int 大小的盒子里完成的。第一步是乘以 90 * 1023,结果溢出 int。您必须通过强制编译器将其中一个数字设为 long 来告诉编译器在右侧使用 long:

long pos = 90L * 1023/360;

推荐阅读