gpt4 book ai didi

c - 除以零警告会导致常量计算中的值错误

转载 作者:行者123 更新时间:2023-11-30 14:56:26 26 4
gpt4 key购买 nike

我正在编写的 AVR32 程序的头文件中有以下代码:

#define PULSE_FREQ 150
#define TC_FREQ (60000000 / 8)
#define PULSE_PER (1 / PULSE_FREQ)
#define TC_PER (1 / TC_FREQ)
#define TTC ((PULSE_PER / TC_PER) - 1)

目标是能够给出频率并计算由以下公式给出的恒定定时器计数值:

Target Count = ((1 / Target Frequency) / (1 / Timer Frequency)) - 1

例如,对于150Hz的定时器频率,需要49999的定时器计数值。当手动输入计时器的值时,它会工作并给出 150Hz 的频率。但是,当使用上面的代码时,我得到的频率为 57Hz。

我还收到有关除以零的警告,常量中的数字是否会太小以至于被截断为零?

在运行时处理这个问题比使用 #define 更好吗?宏?

最佳答案

整数除法可能在某个时刻返回一个小于 1 的数字,并且它被截断为 0。

尝试通过将常量之一设为 double 来强制进行浮点除法:

// The .0 should "infect" the other numbers
#define PULSE_FREQ 150.0
#define TC_FREQ (60000000 / 8)
#define PULSE_PER (1 / PULSE_FREQ)
#define TC_PER (1 / TC_FREQ)
#define TTC ((PULSE_PER / TC_PER) - 1)

关于c - 除以零警告会导致常量计算中的值错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44680242/

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