gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 18:43:42 25 4
gpt4 key购买 nike

当我乘以 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com