2013-06-12 42 views
0

我有一个完整的用C++开发软件的设计。我真的不想改变结构。以整数存储错误值

但是,我有时会得到错误的输出存储在整数变量。输出不是任何数字,输出是NaN。但我不想添加任何其他变量来检查我的整数变量是否有错误。

有没有办法将一个东西如NaN存储在一个整型变量中?

+0

类似的问题:http://stackoverflow.com/questions/3949457/can-an-integer-be-nan-in-c基本上似乎是没有。 –

+1

你想要像'std :: optional'而不使用它?有没有南整数,所以要么你可以负担奢侈品为此目的奉献一个特殊的价值,或者你需要改变你的界面。 –

+0

@ShafikYaghmour谢谢,我做了搜索,但什么也没有。我提交了关闭请求。 – totten

回答

2

这不是魔术,它是信息论的基础知识。 int是存储范围[INT_MIN,INT_MAX]中的值的东西。这是它所能做的,不多不多。

您仅限于使用int值,而您只能使用某个值作为指标。如果这还不够好,你必须重新考虑这个约束。

0

不,没有价值,你可以存储在一个整体类型,可以代表NaN

如果你需要存储这个值,你将不得不重新考虑你的设计。这并不意味着添加一个新的变量,但你可能会改变一个现有的变量。例如,当前存储此值的int变量可能是NaN,可能会更改为boost::optional <int>之类的值。这样,如果值为NaN,则可能未设置,否则设置。

+0

有人不喜欢这个。我很想知道为什么。 –

+0

可选提供的性能与int相同吗? – gnzlbg