当程序启动时,我的程序需要将几个浮点数设置为默认值。随着程序运行,这些整数将被设置为它们的真实值。然而这些真值可以是任何实数。我的程序将一直在检查这些数字,以查看它们的值是否已从默认值改变。例如,让我说我有整数A,B,C。所有这些整数将在开始时设置为默认值(可以说是-1)。然后随着程序的进行,可以说A和B分别设置为3和2。由于C仍然是默认值,程序可以推断出C还没有被分配非默认值。整数的默认值?
尝试查找唯一的默认值时出现问题。由于数字的值可以设置为任何值,如果它设置的值与默认值相同,我的程序将不知道一个浮点数是否仍具有默认值,或者其真值是否与默认值相同。
我认为NULL是一个默认值,但在C++中NULL等于0,导致相同的问题!
我可以创建一个由bool和float组成的完整对象作为成员,其中bool指示该float是否已被赋值为自己的值。然而,这看起来像是过度杀伤力。有没有一个默认值,我可以设置我的浮动,这样的价值是不相同的任何其他值? (例子包括无限或我)
我要求的C/C++解决方案。
C本质上不支持确定值是否已分配的能力。一种策略是创建一个散列表(从变量名到分配的值),如果散列表中不存在变量名,那么它就没有分配给它。 –
*无限或我*不是整数。如果你正在处理浮点数,你可以使用非数字(nan),但是整数没有这个值。你可以使用boost :: optional(实现应该类似于一个布尔值和整数的组合......或者你自己的,但是没有*无效的*整数(除非你的域中有一个,即在你的域中)域-12345是不可能的......) –
你在最后提到了float,在C++中,你可以使用Nan,std :: numeric_limits, :: NaN(),作为标记,但是没有用于整数的标记值 –