整数的默认值?

fdh*_*fdh 4 c++

程序启动时,我的程序需要将几个浮点数设置为默认数字.当程序运行时,这些整数将被设置为它们的真值.然而,这些真实值可以是任何实数.我的程序将一直检查这些数字,看看它们的值是否已从默认值更改.

例如,假设我有整数A,B,C.所有这些整数将在开始时设置为默认值(假设为-1).然后随着程序的进行,让A和B分别设置为3和2.由于C仍处于默认值,因此程序可以得出结论,但尚未为C指定非默认值.

尝试查找唯一的默认值时会出现问题.由于数字的值可以设置为任何值,如果其设置的值与默认值相同,我的程序将不知道浮点数是否仍具有默认值,或者其真值是否与默认值相同.

我认为NULL是一个默认值,但在C++中NULL等于0,导致同样的问题!

我可以创建一个由bool和float组成的整个对象作为成员,其中bool指示浮动是否已经分配了自己的值.然而,这似乎是一种矫枉过正.是否有一个默认值我可以设置我的浮点数,使得该值与任何其他值不相同?(例子包括无限或i)

我在问C/C++解决方案.

kol*_*kol 7

我可以创建一个由bool和一个整数组成的整个对象作为成员,其中bool指示该数字是否已经分配了自己的值.然而,这似乎是一种矫枉过正.

你所描述的在.NET 中被称为" 可空类型 ".C++实现是boost :: optional:

boost::optional<int> A;

if (A)
  do_something(*A);
Run Code Online (Sandbox Code Playgroud)


Mar*_*som 5

在二进制补码机器上有一个整数值,它没有其他值那么有用:INT_MIN.你不能通过否定它来产生有效的正值.由于它是整数范围内最不实用的值,因此它是标记值的不错选择.它还具有易于识别的十六进制值0x80000000.