gpt4 book ai didi

c - 可能溢出C

转载 作者:行者123 更新时间:2023-11-30 15:44:19 25 4
gpt4 key购买 nike

下面列出了几个变量:

int cpu_time_b  = 6
float clock_cycles_a = 2 * pow(10, 10));
float cpi_a = 2.0;
int cycle_time_a = 250;
float cpi_b = 1.2;
int cycle_time_b = 500

我正在通过以下计算计算出 b 的时钟速率:

(((1.2*clock_cycles_a)/cpu_time_b)/(1 * pow(10, 9)))

显然答案应该是 4,但是我的程序输出 6000000204800000000.0 作为答案

我认为这里可能发生溢出。是这种情况吗?如果是,我该如何解决这个问题?

最佳答案

所有计算都应确保可比较的数字一起“减少”。在你的例子中,似乎只有

cpu_time_b

是真正的变量(在代码片段的范围内未定义。所有其他变量都显示为常量。所有常量都应在编译前计算,特别是如果它们容易导致溢出。

clock_cycles_a

取消分母。 pow 很耗时(这里可能并不重要)并且并不总是那么精确。当您声明clock_cycles_a时,您显式地乘以2,然后使用下面的1.2。等等。减少整个事情只保留实际变量变成:

24.0/cpu_time_b

这让我推断 cpu_time_b 应该是 6?

最后,当您编写方程式时,我们不知道您如何处理结果。将其存储在错误的变量类型中? printf 格式错误?等等?

关于c - 可能溢出C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19544424/

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