gpt4 book ai didi

c++ - 楼层函数返回 EXC_BAD_ACCESS

转载 作者:行者123 更新时间:2023-11-28 08:29:08 24 4
gpt4 key购买 nike

我使用的 cod 包含这些代码片段。我用参数 2455343.50000 调用 ThetaG_JD,这只是一个 Julian 日期示例。每次运行该程序时,我都会在指示的行上收到 EXC_BAD_ACCESS。当使用 gdb 并打印出中间值并将它们传递给 floor 函数时,我没有收到任何错误,但是当使用 Frac() 时,它总是返回错误。

double Frac(double arg)
{
/* Returns fractional part of double argument */
return arg - floor(arg);
}

double ThetaG_JD(double jd)
{
/* Reference: The 1992 Astronomical Almanac, page B6. */

double UT=0, TU=0, GMST=0;
//THIS LINE
UT=Frac(jd+0.5);
// THAT ONE ^^
jd=jd-UT;
TU=(jd-2451545.0)/36525;
GMST=24110.54841+TU*(8640184.812866+TU*(0.093104-TU*6.2E-6));
GMST=Modulus(GMST+secday*omega_E*UT,secday);

return (twopi*GMST/secday);
}

最佳答案

EXC_BAD_ACCESS 让我有些费解,但这听起来很像浮点异常。已经有一段时间了,但我记得在 x87 硬件上,您可能会生成上溢/下溢/NaN,并且处理器不会让您知道异常,直到 下一个 FP 操作可能在代码的完全不同的部分。您可以尝试类似 jd += 0.5 的方法来代替对 Frac 的调用,看看它是否仍然死掉。

此外,如果存在错误状态,x87 状态寄存器将能够向您显示,您应该能够在 gbd 中看到它。

关于c++ - 楼层函数返回 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2923882/

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