當程序啓動時,我的程序需要將幾個浮點數設置爲默認值。隨着程序運行,這些整數將被設置爲它們的真實值。然而這些真值可以是任何實數。我的程序將一直在檢查這些數字,以查看它們的值是否已從默認值改變。例如,讓我說我有整數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(),作爲標記,但是沒有用於整數的標記值 –