【发布时间】:2015-03-17 20:44:11
【问题描述】:
我想知道我是否可以在 C 中以以下方式将错误代码返回为双精度:
double getValue()
{
double ret = 0;
if (error1)
{
return -1;
}
if (error2)
{
return -2;
}
return ret = ....;
}
int main(void)
{
double val = getValue();
if (-1 == val)
{
printf("getValue: error1\n")
return -1;
}
else if (-2 == val)
{
printf("getValue: error2\n");
return -2;
}
......
return 0;
}
所以当返回值 >= 0 时,它是可用于计算的正确值。当值小于零时发生错误。 当我将返回值与 -1 或 -2 进行比较时,我会遇到浮点比较问题吗?
【问题讨论】:
-
没有。尽管如此,标志值通常不是一个好主意。考虑
boost::variant<double, error_code>或std::expected喜欢这个提议:github.com/ptal/std-expected-proposal -
您的问题是关于 c 还是 c++?
标签: c++ c comparison point floating