最近,我在閱讀《C++ Primer》,經常看到裡面提到一些錯誤類型,像“編譯錯誤”、“運作錯誤”等。于是,我對C++中的錯誤類型産生了興趣,查閱了一些資料,特整理如下。
(一) 程式錯誤分類
在C++中,程式錯誤分為三類:文法錯誤(syntax error)、邏輯錯誤和運作錯誤。
文法錯誤指違背了C++語言的規定,主要是語句的結構或拼寫中存在的錯誤。
邏輯錯誤是由于程式設計人員設計的算法有錯或編寫的程式有錯,通知給系統的指令與解題的原意不相同,即出現了邏輯上的混亂。
運作錯誤是由系統運作環境造成的,即在運作時出現的錯誤。
(二) 一些常見的錯誤現象
1. 與變量有關的錯誤
(1)忘記定義變量;
(2)變量名命名不當;
(3)資料類型不一緻;
(4)字元常量與字元串常量使用不當;
(5)輸入輸出的資料的類型與所用的格式說明符不一緻;
(6)未注意int型資料的數值範圍;
(7)輸入資料的形式與要求不符;
(8)在使用辨別符時,忘記了大寫字母與小寫字母的差別;
(9)在定義數組時,将定義的“元素個數”誤以為是“可使用的最大下标值”;
(10)對二維或多元數組的定義和引用的方法不對;
(11)誤以為數組名代表數組中全部元素;
2. 與操作符有關的錯誤
(1)比較運算符與指派運算符使用上的錯誤;
(2)因使用自增與自減運算符不當導緻的錯誤(使用自加(++)和自減(--)運算符時出現的錯誤);
(3)誤把“=”作為“等于”運算符;
(4)在輸入語句scanf中忘記使用變量的位址符。
3. 與标點符号有關的錯誤
(1)語句後面漏分号;
(2)在不該加分号的地方加了分号;
(3)對應該有花括号的複合語句,忘記加花括号;
(4)括号不配對;
(5)引用數組元素時誤用了圓括号。
4. 與指針有關的錯誤
(1)混淆字元數組與字元指針的差別;
(2)在引用指針變量之前,沒有對它賦予确定的值;
(3)不同類型的指針混用;
(4)混淆數組名與指針變量的差別。
5. 與語句有關的錯誤
(1)switch語句的各分支中漏寫break語句;
(2)混淆字元和字元串的表示形式;
(3)在需要加頭檔案時沒有用#include指令去包含頭檔案。
6. 與函數有關的錯誤
(1)所調用的函數在調用語句之後才定義,而又在調用前未聲明;
(2)對函數聲明與函數定義不比對;
(3)誤以為形參值的改變會影響實參的值;
(4)函數的實參和形參類型不一緻;
(5)沒有注意函數參數的求值順序。
7. 其它錯誤
(1)混淆結構體類型與結構體變量的差別,對一個結構體類型指派;
(2)使用檔案時忘記打開,或打開方式與使用情況不比對。
總的說來,在編寫程式的過程中,我們肯定會遇到錯誤的,因為“試圖一下子就能寫出一個完全成功的程式幾乎是不可能的”。當我們有了豐富的程式設計經驗之後,面對各種錯誤便能夠輕松解決了!
參考文獻
[1] C++ Primer(中文第三版),中國電力出版社。
[2] C程式設計(第三版),譚浩強(著),清華大學出版社。
[3] C++程式設計常見錯誤分類與解析[J],孫愛民,漯河職業技術學院學報(綜合版),2006年4月。