我有一个C数组的短裤和一长串的数组。我希望能够定义何时一个数组槽无法由调用它的函数填充,因为数据不足或缺失。两种情况下的有效值都可以是正数或负数,但我可以放心地假设这些值永远不会接近可以放在短或双的最大值。
这是一个Windows 64位应用,我一直使用SHRT_MAX
作为短唯一编号。我的问题是:
我可以用于SHRT_MAX
的{{1}}相当于什么?
有没有更好的方法来实现这一目标,而不是诉诸double
和SHRT_MAX
max?
答案 0 :(得分:1)
我假设你使用最大值来表示数组中的 null 参数。这是一种常用技术,完全有效。
至于最大双倍,您需要来自DBL_MAX
的{{1}}。
答案 1 :(得分:1)
宏正是因为你正在使用它们 - 所以这是好的(和便携式)
查看DBL_MAX
答案 2 :(得分:0)
1)您可以使用float.h中的DBL_MAX
或numeric_limits<double>::max()
2)使用最大值似乎没问题,只要你确定它们永远不会是正常的&#34;值。否则,您可以使用一个知道数字是否已更改的小对象:
struct Input
{
short value;
bool isTransformed;
Input() : value(0), isTransformed(false) {}
};
答案 3 :(得分:0)
您可以使用信号NaN(numeric_limits::signaling_NaN
)。这样,如果有人试图使用它,它们将采用浮点异常。