[英]What is wrong with this c code line?
這條線
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運算符的優先級,尤其是+
與?:
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.