【发布时间】:2013-04-30 09:35:36
【问题描述】:
我有一个双精度函数,通常返回变量的新值,但有时我不想更改变量,我想通过返回一个特殊值来表示这一点,例如 void。这可能吗?
例如:
double GetNewValue(int feature) {
switch( feature ) {
case TYPE1:
return void; // or maybe use return; here?
case TYPE2:
return 2.343;
default:
return featureDefaultValue;
}
}
PS:我知道我可以使用 NaN,但我已经将它用作具有其他含义的有效值(目前还没有可用的数字)。
/编辑:谢谢大家的回答,这3个答案都适用于我的问题,并且都同样有效。我现在正在努力选择我要使用哪一个(我会接受哪个,但我希望我能全部接受!)。
【问题讨论】:
-
您可以使用
NaN。void没有意义,因为它类似于类型,而不是值。 -
但是我该如何检查呢?是否可以影响变量并检查返回值是否为none?
-
顺便说一句。有许多不同的 NaN。原则上,您可以使用不同的 NaN 来表示不同的含义,但这可能是个坏主意。
-
关于你的后记,“我知道我可以使用 NaN,但我已经将它用作具有另一种含义的有效值(还没有可用的数字”,你知道有 几个 NaN?您只需要使用与用于“尚无可用编号”的那个不同的一个。Google“NaN 有效负载”以获取详细信息。
-
@CodesInChaos 我认为如果您打算进行涉及其中几个的计算,那么使用不同的 NaN 只是一个坏主意。然后,您可能会得到任何原始 NaN 作为结果(AFAIK 每个 IEEE 754 操作都被定义为返回它作为参数接收的一个 NaN,如果它的某些参数是 NaN)。使用几个 NaN 作为占位符很好。