所以我有一個功能,看起來是這樣的:cout可以以某種方式改變變量嗎?
float function(){
float x = SomeValue;
return x/SomeOtherValue;
}
在某些時候,這個功能溢出,並返回一個非常大的負值。嘗試追查正是這個是怎麼回事,我添加了一個COUT語句,因此該函數是這樣的:
float function(){
float x = SomeValue;
cout << x;
return x/SomeOtherValue;
}
和它的工作!當然,我通過使用雙重解決了這個問題。但我很好奇,爲什麼這個功能在我打開它時正常工作。這是典型的,還是可能在我失蹤的其他地方存在一個錯誤?
(如果它的任何幫助,存儲在浮動值僅僅是一個整數值,並沒有特別大的一個,我只是把它放在一個浮動,以避免鑄造。)
這裏還有一個GCC說明http://gcc.gnu.org/wiki/x87note 由於這個奇妙的行爲,除非使用預先計算的值,否則比較浮點計算也是固有的破壞。 – hazzen 2008-09-08 19:57:12