實際程式設計時,往往出現一些低階錯誤。這些錯誤與**的使用本身無關,與演算法也無關,而是由於自己的粗心大意。一旦出現這種錯誤,往往讓人摸不著頭腦,瞎糊弄半天沒找出問題的根源。
將自己所犯過的低階錯誤一一記錄於此,謹防日後再犯!
1、不要在子函式內部列印輸出變數的值
因為,子函式往往被多次呼叫,每次呼叫的結果都不一樣。如果用類似控制台列印、寫檔案的方法,只會顯示或儲存最後一次呼叫的結果!
在內部看結果,僅限於debug單步的時候!
這次就被這個問題搞得很鬱悶:
目的是要觀察直方圖中的最大值座標(通過乙個子函式實現),座標值為double變數。在debug下單步進去該函式是直接可以看到的,我多手把它列印出來,結果發現出問題了。用了所有方法,c的file和fwrite、c++的ofstream、控制台cout、yml的filestorage,結果都是「錯誤的」,和我debug看到的不一致。怎麼想也不可能,最後竟然想難道stdio不支援double型變數?
就是疏忽了這條細節,其實這個子函式在後面又呼叫了一次,所以我每次看到的都是最後一次的結果,當然跟debug看到的當前值不一樣!
2、待續......
Windows開發筆記 錯誤處理
windows函式為開發者提供了錯誤 這樣當呼叫windows函式失敗後,可以通過檢視錯誤 了解錯誤資訊。相應的錯誤與主調執行緒關聯在一起,這種機制使得不同的執行緒能夠獨立執行而不會相互干擾。呼叫getlasterror 檢視錯誤 windows提供的錯誤 很多,相應的標頭檔案是winerror.h...
matlab程式設計筆記 錯誤集錦
總結一些自己遇到過的使人抓狂的報錯,往往是自己粗心大意造成的 disp jafjjaja index exceeds matrix dimensions 原因 前面把disp定義為變數了,程式設計的時候千萬要注意噢!已存在的函式名不能用作變數名 find a b ans empty matrix 1...
Swift學習筆記 錯誤處理
錯誤分為可恢復的錯誤和不可恢復的錯誤,可恢復的錯誤指的是能預見並處理的錯誤,例如檔案不存在,網路連線失敗等 不可恢復的錯誤指的是一類特殊的bug,例如強制展開值為nil的可空例項,陣列越界訪問等 如果發生錯誤沒有處理,程式就會停止執行。遺憾的是swift中似乎只能處理可恢復的錯誤。swift中使用a...