簡體   English   中英

此C代碼行有什么問題?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM