VC6 scanf float 出錯----bug?
請有VC6.0的朋友試一下這個程序,運行的時候輸入一個數字,會出現runtime error(運行期錯誤),VS2008沒有錯誤,其它的版本沒有試。
查了一下資料微軟給出的官方解釋是:當應用程序從控制檯讀取的浮點值,到一個未初始化"浮動"類型的全局變量使用 scanf() 函數時,則會發生 R6002 浮點格式支持不加載"錯誤。 在使用任何格式輸入的例程中讀取值時,也會發生此錯誤。
微軟的官方解決方案:要變通解決此問題,初始化浮點變量或表達式中包含 scanf() 調用該例程中使用該變量。
看來變量的初始化確實是個很好的習慣,我們可以這樣改:
或者,在需要用到浮點數的程序的主函數中定義一個:
雖然這種方法不太正宗,呵呵,但是,自我認爲也不錯!