最近,我在閱讀《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)使用文件時忘記打開,或打開方式與使用情況不匹配。
總的說來,在編寫程序的過程中,我們肯定會遇到錯誤的,因為“試圖一下子就能寫出一個完全成功的程序幾乎是不可能的”。當我們有了豐富的編程經驗之後,面對各種錯誤便能夠輕松解決了!