我想知道为什么这段代码不能正常工作。 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;
答案 0 :(得分:1)
您必须在float
后加f
个常量。我假设您的变量rms
的类型为float
。因为,常量0.001
将隐式具有double
类型精度。
如果我说得对,以下情况应该有效。
if(rms <0.001f){
return TestPassed
}
else{
return testFailed
}
答案 1 :(得分:0)
原始问题没有说明Test_PASSED
或Test_FAILED
是什么。但是一个可能的错误是它们被意外地设置为相同的东西。
另一个可能的错误是他们正在接受测试的方式,例如: ==
和=
之间的混淆。
答案 2 :(得分:0)
if用大写字母i写,这是不正确的。 if块内的语句未完成;
代码应该是
if (rms < 0.001) {
return TestPassed;
}
else {
return testFailed;
}
但是,还不清楚TestPassed和testFailed是什么 - 你复制了一段不完整的代码。可能你也错过了其中一个的拼写。
最后,似乎最大的问题是你正在使用C学习编程。有更好的语言。任何现代高级编程语言都会更好。试试,例如,python或ruby。