浮点返回值,表示错误

thi*_*his 2 c

我的函数从对象返回一个浮点值.如果函数找不到合适的浮点值,则应返回错误,以便我可以在代码中正确处理它.

我的问题是如何返回错误.

添加额外参数并使用它来设置错误标记的选项不是首选.

我可以返回一个神奇的值,这是一个有效的选项吗?我在程序中的浮点值永远不会超过非常大的数字(从不超过10 ^ 12),因此返回FLT_MAX来检查错误可能是一个选项.

有更好的(便携式)方式吗?

Osw*_*ald 6

如果您#include <math.h>,您可以NAN在出现错误时返回.这是唯一的浮法f为其f == fFALSE.


unw*_*ind 5

返回一个魔法值是唯一的选择,除了设置一个全局(更糟糕)。

最好的解决方案是修改的原型,喜欢的东西:

bool findAFloat(float *result);
Run Code Online (Sandbox Code Playgroud)

这很清楚,易于使用,而且相当明显。

你也可以去:

float findAFloat(float ifNotFound);
Run Code Online (Sandbox Code Playgroud)

如果没有找到值,让调用者决定返回什么。

  • @Dirk 它确实有一个 `bool`(C99 IIRC),定义在 `stdbool.h` 中 (2认同)