gpt4 book ai didi

c - 这个c代码行有什么问题?

转载 作者:太空宇宙 更新时间:2023-11-04 02:44:07 24 4
gpt4 key购买 nike

这一行

double hdg_and_lee = cal_array[variation] +
normalize(corrected.hdg + (corrCalc.twa > 0 && corrCalc.twa < 180)
? -abs(corrected.leeway) : abs(corrected.leeway));

返回 cal_array[variation] 的值,这显然是不正确的。 corrected.leeway 恰好为 0,但 corrected.hdg 为 211,variation 为 14,这就是该行的计算结果。

我把它改成了这个,这行得通,但我认为应该和上面的行一样。

double lee = (corrCalc.twa > 0 && corrCalc.twa < 180) ? -abs(corrected.leeway) : abs(corrected.leeway));
double hdg_and_lee;
hdg_and_lee = cal_array[variation] + corrected.hdg + lee;
hdg_and_lee = normalize(hdg_and_lee);

我只是看不出我做错了什么。

这里是归一化。它只是使角度在 0 到 360 之间;

double normalize(double angle){
while (angle < 0) angle += 360;
while (angle > 360) angle -= 360;
return angle;
}

这让我抓狂,但我当然有一个可行的替代方案。我只想知道出了什么问题。

最佳答案

试试这个

double hdg_and_lee = cal_array[variation] + normalize(corrected.hdg +  ((corrCalc.twa > 0 && corrCalc.twa < 180)? -abs(corrected.leeway) : abs(corrected.leeway)));

检查 C 运算符优先级,尤其是 +?:

关于c - 这个c代码行有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29089202/

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