我正在读取传感器的值,并将它们保存在以下变量中。
uint16_t C2;
uint16_t C4;
signed long int dT = 0;然后我想做这个计算;
signed long long int OFF = 0;
OFF=C2* 131072+(C4*dT)/64;当我打印输出时,它会打印0。
我认为问题是因为dT是32位的,反之是64位的。但我不知道如何解决这个问题。
我正在使用stm32f103rb并用stm32CubeIDE编程
发布于 2021-07-05 23:38:46
如果不强制转换并在32位系统上执行,则结果为-24930011
如果您使用
OFF=(int64_t)C2*131072+((int64_t)C4*dT)/64;结果是4404255012。
https://stackoverflow.com/questions/68258562
复制相似问题