-5

なぜこのコードが正しく動作しないのか疑問に思っています。rms は何らかの処理によって計算された値であり、結果は 0.000146 になり、テストに合格したと結果を確認したいのですが、テストに失敗しました。何が間違っていますか?

 If(rms <0.001){
    return Test_PASSED
    }
    else{
    return Test_FAILED
    }

Test_PASSED および TEST_FAILED は、次のように定義された列挙です。

//! 可能なテスト結果 typedef enum

{

Test_PASSED = 0, //!< passed

Test_FAILED = -1 //!< failed

} Test_Result_e;

4

3 に答える 3

1

float定数の末尾にf. 変数rmsのタイプはfloat. 定数0.001には暗黙的にdouble型精度があるためです。

私が正しければ、次のように動作するはずです。

   if(rms <0.001f){
    return TestPassed
    }
    else{
    return testFailed
    }
于 2013-06-11T15:11:51.133 に答える
0

元の質問では、何を指定していませんでしTest_PASSEDTest_FAILED。しかし、考えられるバグの 1 つは、それらが誤って同じものに設定されていたことです。

もう 1 つの考えられるバグは、テストの方法です。たとえば、 と の間の混乱==です=

于 2013-06-11T15:13:05.600 に答える
0

if は大文字の i で書かれていますが、これは正しくありません。if ブロック内のステートメントは ; で終了していません。

コードは

if (rms < 0.001) {
    return TestPassed;
}
else {
    return testFailed;
}

それでも、TestPassed と testFailed が何であるかは明確ではありません。不完全なコードをコピーしたのです。おそらく、そのうちの 1 つのスペルも間違っているでしょう。

最後に、最大の問題は、C を使用して一般的なプログラミングを学んでいるということのようです。それにはもっと優れた言語があります。現代の高レベルのプログラミング言語はどれも優れています。たとえば、python や ruby​​ を試してください。

于 2013-06-11T15:14:13.630 に答える