-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是 type float。因为,常量0.001将隐含地具有double类型精度。

如果我是正确的,以下应该有效。

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

最初的问题没有具体说明什么Test_PASSED或是Test_FAILED。但一个可能的错误是它们被意外设置为相同的东西。

另一个可能的错误是它们被测试的方式,例如 和 之间的==混淆=

于 2013-06-11T15:13:05.600 回答
0

if 用大写 i 写,这是不正确的。if 块中的语句未以 ; 结尾。

代码应该是

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

尽管如此,还不清楚 TestPassed 和 testFailed 是什么——你复制了一段不完整的代码。可能您也错过了其中一个的拼写。

最后,似乎最大的问题是您正在使用 C 来学习一般的编程。有更好的语言可以做到这一点。任何现代高级编程语言都会更好。例如,尝试使用 python 或 ruby​​。

于 2013-06-11T15:14:13.630 回答