此代碼:
#include <stdio.h>
#define MIN(a,b) (((a) < (b)) ? (a) : (b))
int main(void)
{
for (int i = 0; i < 20; i++)
{
float abs_yaw = 0.022 + (i/4000.0);
float result = (21.0F - ((13.5F/0.035F) * (MIN(abs_yaw, 0.06F) - 0.025F)));
printf("%2d: %6.4f yields %10.6f\n", i, abs_yaw, result);
}
return 0;
}
產生在Mac OS X 10.7.4將這些結果與GCC 4.7.1。
0: 0.0220 yields 22.157143
1: 0.0223 yields 22.060715
2: 0.0225 yields 21.964285
3: 0.0227 yields 21.867857
4: 0.0230 yields 21.771429
5: 0.0233 yields 21.674999
6: 0.0235 yields 21.578571
7: 0.0237 yields 21.482143
8: 0.0240 yields 21.385714
9: 0.0243 yields 21.289286
10: 0.0245 yields 21.192858
11: 0.0247 yields 21.096428
12: 0.0250 yields 21.000000
13: 0.0253 yields 20.903572
14: 0.0255 yields 20.807142
15: 0.0258 yields 20.710714
16: 0.0260 yields 20.614286
17: 0.0262 yields 20.517859
18: 0.0265 yields 20.421429
19: 0.0268 yields 20.325001
你能適應它來磨練自己的價值觀,但它並不像應該有一個問題,你可以想像,發現了一個編譯器錯誤。 OTOH,你的測試代碼可能不像這樣簡單;如果你嘗試這個,它可能會工作。所以,不要去聲明編譯器錯誤。假設在你的代碼中有一個錯誤,直到所有其他的失敗。嘗試一個不同的編譯器(對同一代碼獲得第二個意見)。
請發表更多代碼。具體而言,您實際使用的是abs_yaw的值以及bs [Line]的數據類型,如float,double等。 –
可能性1:本地變量事實上不包含21.0f。可能性2:'abs_yaw'不是一個變量,而是一個帶有副作用的表達式。可能性3:你不**知道'abs_yaw'只是0.025以上,事實上它更大。 –
@DanielFischer確實,有了更多的代碼,我們可以幫助更好。 –