Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 一个Arduino巨型模型的奇异计算_C++_Arduino - Fatal编程技术网

C++ 一个Arduino巨型模型的奇异计算

C++ 一个Arduino巨型模型的奇异计算,c++,arduino,C++,Arduino,看看这个非常基本的Arduino计划: long pos = 90 * 1023/360; Serial.println(pos); 它应该显示255,但它显示73。我不明白为什么 这个程序是在Arduino Mega上运行的。因为等号右边的所有东西都是整数大小的,所以数学是在整数大小的框中完成的。第一步是将90*1023相乘,结果会溢出int。您必须通过强制编译器将其中一个数字设为long来告诉编译器在右侧使用long: long pos = 90L * 1023/360; 您可以简单地将

看看这个非常基本的Arduino计划:

long pos = 90 * 1023/360;
Serial.println(pos);
它应该显示255,但它显示73。我不明白为什么


这个程序是在Arduino Mega上运行的。

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

long pos = 90L * 1023/360;

您可以简单地将右侧的一个数字转换为一个长数字

long pos = 90 * 1023L/360;

你的答案与上面的答案完全相同,这是不久前回答的。