邱吉
四川省內江市第六中學高17屆24班
C語言編程中常見錯誤及解決辦法探討
邱吉
四川省內江市第六中學高17屆24班
C語言是一門通用的計算機編程語言,因其可以以簡易的方式編譯、產生少量的機器碼、存儲器處理低級以及運行環(huán)境無限制使得C語言應用廣泛,但因在編程過程中因為種種原因造成的錯誤使得程序設計很少沒有錯誤的一次完成,因此本文就C語言編程中常見的錯誤進行探討并提出解決辦法。
C語言;編程;常見錯誤
C語言作為應用做廣泛的程序設計語言之一,對于初學者來說調試程序的時間往往都比編程的時間長,本人基于參加過的各類機器人競賽及信息類比賽中C語言編程的經驗,對C語言編程中的常見問題進行歸納總結。
2.1C語言編程中的常見錯誤
2.1.1C語言程序錯誤
程序錯誤即為“Bug”,檢測并修正錯誤即為“Dbug”,C語言中常見的程序錯誤分為:語法錯誤、運行錯誤和邏輯錯誤,語法錯誤是由于編程中輸入的不符合語法規(guī)則而產生的錯誤,常見錯誤是由于表達式不完整、關鍵字輸入錯誤、循環(huán)語句或選擇語句的關鍵字不配對、數據類型不匹配等造成的,但在編譯器的編譯過程中會將檢測到的語法錯誤提示列舉出來,根據提示的信息可以對語法錯誤進行修正;運行錯誤是指在運行過程中出現的錯誤,往往會出現進行除法運算時除數為零、文件無法打開、數組下標越界等情況,當檢測出沒有語法錯誤與邏輯錯誤時,通??紤]為運行過程中出現的錯誤;邏輯錯誤是指在程序語法上是正確的,但程序邏輯上存在缺陷,在程序運行后并沒有達到預期效果,主要是由于使用了不正確的變量類型、程序設計算法考慮不周、循環(huán)條件不正確等原因造成的,但此類錯誤在編輯過程中并不能檢測得到,也不會產生邏輯錯誤提示信息。
2.1.2常見錯誤的舉例分析
對于數據類型的轉換問題,在C語言編程中不同類型的數據進行混合運算時系統會自動進行類型轉換,而轉換是與運算結果的實際類型無關的,其依據是表達式中的各運算量的類型,因此當運算量的類型和運算結果的實際類型不一樣時就會產生數據的轉換問題,因此,在數據運算時要注意運算結果的數據類型,當運算結果的實際類型超過了運算數據類型表示的數值范圍時就必須強制轉換運算符號。
對于編程中分號的使用,常常發(fā)生多加或漏加的情況,其典型錯誤如下:在編程中,錯誤的在函數定義時加上分號,因此要明確函數定義時不加分號,在函數聲明時加分號;聲明結構類型、共用體類型和枚舉類型時漏掉了分號;使用if語句中在if后面多加了分號會造成if語句的缺失使得程序功能缺失甚至會造成程序的運行失??;在一條語句結束之后忘加分號,分號是C語言語句不可或缺的部分,切記要在語句結束后加上分號,已進行語句的劃分。
對于程序輸入時的錯誤,通常是編程過程中忽略語言輸入的狀態(tài),例如C語言在編譯系統中習慣上將符號常量用大寫表示,變量使用小寫以便進行區(qū)分,增加可讀性,因此,忽略英文字母的大小寫區(qū)分往往造冊很難過程序的輸入錯誤,通知,運算符號的掌握不牢也容易造成運算的不當。
2.2C語言程序的調試
2.2.1靜態(tài)檢查
在編寫好程序之后要對程序先進行人工檢查,主要是發(fā)現由于疏忽造成的大量錯誤,減少后續(xù)計算機檢測的時間,同時培養(yǎng)程序設計人員的嚴謹的工作作風,為了更高效的進行人工檢查,在編輯程序時要注意:編程盡量增加可讀性,通常采用結構化程序的方法進行編程;同時可以在編程過程中加入注釋,在理解每段程序的作用的同時也便于程序的檢查;在編寫復雜程序的時候多利用函數,盡量使用一個函數實現一個單獨的功能,避免將全部語句寫在一個main函數中,使得檢查與處理中可以分別檢查每個功能范圍。
2.2.2動態(tài)檢查
在人工檢查無誤后進行上機動態(tài)調試,程序編譯時編譯器可以對程序中的語法錯誤進行診斷,編譯診斷的語法錯誤主要是致命錯誤、錯誤和警告,“致命錯誤”主要是編譯程序內部發(fā)生的錯誤,發(fā)生此類錯誤后編譯被迫中止,只能重新啟動編譯程序進行編譯,因此,在編譯前最好進行程序的保存;“錯誤”是在編譯過程中語法不當引起的錯誤,編譯程序一般都會進行報錯提示,根據提示即可進行源程序的修改;“警告”有些會導致錯誤,有些可以強行編譯通過。
運行之后對運行結果進行分析,運行結果不正確一般都是邏輯錯誤,首先將程序與流程圖進行對照,其程序的錯誤是很容易發(fā)現的;如果找不到錯誤,一般進行“分段檢查”,不斷縮小查錯區(qū),逐段進行檢查可以講錯誤集中在某一區(qū)段,發(fā)現錯誤所在;在程序中未發(fā)現錯誤則說明算法無錯誤,就要檢查流程圖的錯誤。
當檢測出沒有語法錯誤與邏輯錯誤時,通常考慮為運行過程中出現的錯誤。
要想編寫優(yōu)質的程序,在基礎知識通徹理解的基礎上,還要不斷在實踐中總結積累,上機調試程序的目的不僅是驗證程序的正確與否,更是通過掌握調試的方法與技巧,學會自己尋找問題,避免編程中的問題,提高自己的編程質量,程序檢驗的過程反映一個人的能力與態(tài)度,因此要注重程序的調試,努力提高自己編程能力。
[1]陳火濤,謝麗珍,張偉志.C語言編程中常見錯誤及解決辦法探討[J].科技,2016,05:17.
[2]楊麗英.C語言程序設計中常見錯誤分析[J].赤峰學院學報(自然科學版),2007,03:55-56.
[3]李自清.淺談C語言編程中的常見錯誤和解決方法[J].科技信息(科學教研),2007,33:85-86.