gpt4 book ai didi

c - 在 K&R 2-1 中解释这段代码

转载 作者:太空狗 更新时间:2023-10-29 16:38:33 24 4
gpt4 key购买 nike

我正在尝试确定各种浮点类型的范围。当我阅读这段代码时:

#include <stdio.h>

main()
{
float fl, fltest, last;
double dbl, dbltest, dblast;

fl = 0.0;
fltest = 0.0;
while (fl == 0.0) {
last = fltest;
fltest = fltest + 1111e28;
fl = (fl + fltest) - fltest;
}
printf("Maximum range of float variable: %e\n", last);

dbl = 0.0;
dbltest = 0.0;
while (dbl == 0.0) {
dblast = dbltest;
dbltest = dbltest + 1111e297;
dbl = (dbl + dbltest) - dbltest;
}
printf("Maximum range of double variable: %e\n", dblast);
return 0;
}

我不明白为什么作者在 fltest 变量中添加了 1111e28

最佳答案

循环在 fltest 时终止。达到 +Inf , 截至那时 fl = (fl + fltest) - fltest变成 NaN ,不等于 0.0 . last包含一个值,当添加到 1111e28 时生产 +Inf所以接近float的上限.

1111e28被选择到达+Inf相当快;它还需要足够大,以便在添加到大值时循环继续进行,即它至少与最大和第二大非无限 float 之间的差距一样大。值(value)观。

关于c - 在 K&R 2-1 中解释这段代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24144274/

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