程序启动时,我的程序需要将几个浮点数设置为默认数字.当程序运行时,这些整数将被设置为它们的真值.然而,这些真实值可以是任何实数.我的程序将一直检查这些数字,看看它们的值是否已从默认值更改.
例如,假设我有整数A,B,C.所有这些整数将在开始时设置为默认值(假设为-1).然后随着程序的进行,让A和B分别设置为3和2.由于C仍处于默认值,因此程序可以得出结论,但尚未为C指定非默认值.
尝试查找唯一的默认值时会出现问题.由于数字的值可以设置为任何值,如果其设置的值与默认值相同,我的程序将不知道浮点数是否仍具有默认值,或者其真值是否与默认值相同.
我认为NULL是一个默认值,但在C++中NULL等于0,导致同样的问题!
我可以创建一个由bool和float组成的整个对象作为成员,其中bool指示浮动是否已经分配了自己的值.然而,这似乎是一种矫枉过正.是否有一个默认值我可以设置我的浮点数,使得该值与任何其他值不相同?(例子包括无限或i)
我在问C/C++解决方案.
我可以创建一个由bool和一个整数组成的整个对象作为成员,其中bool指示该数字是否已经分配了自己的值.然而,这似乎是一种矫枉过正.
你所描述的在.NET 中被称为" 可空类型 ".C++实现是boost :: optional:
boost::optional<int> A;
if (A)
do_something(*A);
Run Code Online (Sandbox Code Playgroud)
在二进制补码机器上有一个整数值,它没有其他值那么有用:INT_MIN.你不能通过否定它来产生有效的正值.由于它是整数范围内最不实用的值,因此它是标记值的不错选择.它还具有易于识别的十六进制值0x80000000.