c - C 中的浮点与整数数据类型计算问题

标签 c types primitive-types

当我乘以 float * 12 时,以下代码不会产生我期望的答案。

void setup_timer_parameters(float micro_seconds)
{
   //constants
   calibration = 0;

   //calculables
   periods_needed = micro_seconds * 12 + calibration;

   target_overflows = periods_needed / 65536;
   overflows_counter = target_overflows;

   temp = periods_needed - (target_overflows * 65536);
   leftover = (long)temp;
   //int overflows_needed = micro_seconds % timer_period;
   printf(lcd_putc, "\fPN%05f TMP%05f\nTO%05f LO%05f", periods_needed, temp, target_overflows, leftover);
}

void main(){
   setup_timer_parameters(20000F);
}

出于某种原因,我的显示屏显示 period_needed 是 -518!为什么不是 20000*12 = 240000?

最佳答案

您正在为嵌入式平台进行编译吗?

也许你的默认 int 只有 2 字节宽,在这种情况下 12 * 20000 会溢出。

关于c - C 中的浮点与整数数据类型计算问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2352953/

相关文章:

我可以使用 C 获取给定 PID 的 UID

c# - 错误 : is a 'field' but is used like a 'type' c#

c - C 中的字和双字整数

matlab - MATLAB 是否有类似集合的数据类型?

java - 计算普通数字实例的字节使用量

c - 在C中读取matlab的mat文件

android - Native C Android - 使用 libptrhead 构建可执行文件时出现问题

时间:2019-01-17 标签:c#graphicsdrawstring()listviewtoimage

python - 如何制作特定对象的python数组

java - 为什么我不应该从 Long.parseUnsignedLong 得到一个值