以下代码中的错误

时间:2013-06-11 15:05:02

标签: c

我想知道为什么这段代码不能正常工作。 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;

3 个答案:

答案 0 :(得分:1)

您必须在float后加f个常量。我假设您的变量rms的类型为float。因为,常量0.001将隐式具有double类型精度。

如果我说得对,以下情况应该有效。

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

答案 1 :(得分:0)

原始问题没有说明Test_PASSEDTest_FAILED是什么。但是一个可能的错误是它们被意外地设置为相同的东西。

另一个可能的错误是他们正在接受测试的方式,例如: ===之间的混淆。

答案 2 :(得分:0)

if用大写字母i写,这是不正确的。 if块内的语句未完成;

代码应该是

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

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

最后,似乎最大的问题是你正在使用C学习编程。有更好的语言。任何现代高级编程语言都会更好。试试,例如,python或ruby。