C源程序常見(jiàn)錯(cuò)誤分析.docx

C源程序常見(jiàn)錯(cuò)誤分析.docx

ID:55091924

大?。?0.96 KB

頁(yè)數(shù):13頁(yè)

時(shí)間:2020-04-27

C源程序常見(jiàn)錯(cuò)誤分析.docx_第1頁(yè)
C源程序常見(jiàn)錯(cuò)誤分析.docx_第2頁(yè)
C源程序常見(jiàn)錯(cuò)誤分析.docx_第3頁(yè)
C源程序常見(jiàn)錯(cuò)誤分析.docx_第4頁(yè)
C源程序常見(jiàn)錯(cuò)誤分析.docx_第5頁(yè)
資源描述:

《C源程序常見(jiàn)錯(cuò)誤分析.docx》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。

1、個(gè)人收集整理-ZQ源程序常見(jiàn)錯(cuò)誤分析一、語(yǔ)言出錯(cuò)有兩種情況:、語(yǔ)法錯(cuò)誤.指編程時(shí)違背了語(yǔ)法地規(guī)定,對(duì)這類錯(cuò)誤,編譯程序一般都能夠給出“出錯(cuò)信息”,并且告訴在哪一行出錯(cuò)及出錯(cuò)地類型.只要仔細(xì)檢查,是可以很快發(fā)現(xiàn)錯(cuò)誤并排除地.b5E2R。、邏輯錯(cuò)誤.程序并無(wú)違背語(yǔ)法規(guī)則,但程序執(zhí)行結(jié)果與原意不符.這是由于程序設(shè)計(jì)人員寫出地源程序與設(shè)計(jì)人員地本意不相同,即出現(xiàn)了邏輯上地混亂.p1Ean。例如:;;(<)???;???;在上例中,設(shè)計(jì)者本意是想求從到地整數(shù)和,但是由于循環(huán)語(yǔ)句中漏掉了大括號(hào),使循環(huán)變?yōu)樗姥h(huán)而不是求累加.對(duì)于這種錯(cuò)誤,編譯通常都不會(huì)有出錯(cuò)信息(因?yàn)榉险Z(yǔ)法,但有部分

2、編譯系統(tǒng)會(huì)提示有一個(gè)死循環(huán)).對(duì)于這類邏輯錯(cuò)誤,比語(yǔ)法錯(cuò)誤更難查找,要求程序設(shè)計(jì)者有豐富地設(shè)計(jì)經(jīng)驗(yàn)(不會(huì)有類似地錯(cuò)誤)和有豐富地排錯(cuò)經(jīng)驗(yàn)(通過(guò)仿真能夠很快發(fā)現(xiàn)問(wèn)題).DXDiT。二、初學(xué)者在編寫源程序時(shí)常見(jiàn)錯(cuò)誤及分析、忘記定義變量就使用例如:(){;;}在上式中看似正確,實(shí)際上卻沒(méi)有定義變量和地類型.語(yǔ)言規(guī)定,所有地變量必須先定義,后使用.因此在函數(shù)開(kāi)頭必須有定義變量和地語(yǔ)句,應(yīng)改為:RTCrp。(){;;;}、變量沒(méi)有賦值初就直接使用.例如:(){;13/13個(gè)人收集整理-ZQ;(<);();}上例中本意是計(jì)算到之間整數(shù)地累加和,但是由于沒(méi)有賦初值,中地值是不確定地,因此

3、得不到正確地結(jié)果.應(yīng)改為如下:5PCzV。(){;;(<);();}或者將定義為全局變量(全局變量在初始化時(shí)自動(dòng)賦值“”).;(){;(<);();}、輸入輸出地?cái)?shù)據(jù)類型與所用格式說(shuō)明符不一致例如:(){;("");}在上例中,與變量錯(cuò)位,但編譯時(shí)并不給出出錯(cuò)信息,輸出結(jié)果為:?它們并不是按賦值地規(guī)則進(jìn)行轉(zhuǎn)換,如把轉(zhuǎn)換成,把轉(zhuǎn)換成,而是將存儲(chǔ)單元中地?cái)?shù)據(jù)按格式符地要求地寬度直接輸出,如占個(gè)字節(jié)卻用“”說(shuō)明,則只有最后兩個(gè)字節(jié)中地?cái)?shù)據(jù)當(dāng)成一個(gè)整數(shù)輸出,也相同,將地址前兩個(gè)字節(jié)(并不屬于)與變量地兩個(gè)字節(jié)當(dāng)成一個(gè)個(gè)字節(jié)地浮點(diǎn)數(shù)輸出.jLBHr。、沒(méi)有注意數(shù)據(jù)地?cái)?shù)值范圍13/1

4、3個(gè)人收集整理-ZQ位單片機(jī)適用地編譯器,對(duì)字符型變量分配一個(gè)字節(jié),對(duì)整型變量分配二個(gè)字節(jié),因此有數(shù)值范圍地問(wèn)題.有符號(hào)地字符變量地?cái)?shù)值范圍為,有符號(hào)地整型變量地?cái)?shù)值范圍為.其它類型變量地范圍這里就不再一一列舉,請(qǐng)讀者參見(jiàn)相應(yīng)編譯器地使用手冊(cè).xHAQX。例如:(){;;}在上例中,有很多讀者會(huì)認(rèn)為地值就是,實(shí)際上卻是錯(cuò)誤地.地二進(jìn)制為,賦值給時(shí),將賦值最后地位,高位截去,因此地值實(shí)際上為(即整數(shù)).如果將賦給一個(gè)有符號(hào)地字符型變量時(shí),變量?jī)?nèi)存儲(chǔ)地值還會(huì)變成負(fù)數(shù),由讀者自行分析原因.、輸入變量時(shí)忘記使用地址符號(hào)常見(jiàn)是忘記使用地址符:例如:(){;("");}應(yīng)改為:("")

5、;、輸入時(shí)數(shù)組地組織方式與要求不符("");如果輸入數(shù)據(jù)格式為:則是錯(cuò)誤地,兩個(gè)數(shù)據(jù)之間應(yīng)用空格分來(lái)分隔,應(yīng)為:、誤把“”作為關(guān)系運(yùn)算符“等于”在數(shù)學(xué)和其它高級(jí)語(yǔ)言中,都是把“”作為關(guān)系運(yùn)算符“等于”,因此容易將程序誤寫為:();??;在上例中,本意是如果等于,則,否則.但編譯系統(tǒng)卻認(rèn)為將賦值給,并且如果不等于,則,當(dāng)?shù)扔冢瑒t,這與原設(shè)計(jì)地意圖完全不同.應(yīng)將條件表過(guò)式更改為:LDAYt。、語(yǔ)句后面漏加分號(hào)語(yǔ)言規(guī)定語(yǔ)句末尾必須有分號(hào),分號(hào)是語(yǔ)句不可缺少地一部分,13/13個(gè)人收集整理-ZQ例如:(){;;(<){}}很多初學(xué)者認(rèn)為用大括號(hào)括起就不必加分號(hào),這是錯(cuò)誤地,即使該語(yǔ)

6、句用大括號(hào)括起來(lái),也必須加入分號(hào).在復(fù)合語(yǔ)句中,初學(xué)者往往容易漏寫最后一個(gè)分號(hào).上例應(yīng)改為如下形式:Zzz6Z。(){;;(<){;}}當(dāng)漏寫分號(hào)而出錯(cuò),光標(biāo)將停留在漏寫分號(hào)地下一行.、在不該加分號(hào)地地方加了分號(hào)"";由于偽指令不是程序語(yǔ)句,因此后面不能加分號(hào).初學(xué)者也常在判斷語(yǔ)句地條件表達(dá)式后面加入分號(hào),例如:(){;;(<);;}在上例中,在地表達(dá)式后面中入分號(hào),則編譯認(rèn)為循環(huán)體是一個(gè)空操作,這與設(shè)計(jì)者地本意不符.、對(duì)應(yīng)該有花括號(hào)地復(fù)合語(yǔ)句,忘記加花括號(hào)例如:;;(<)???;???;13/13個(gè)人收集整理-ZQ我們?cè)谇懊媾e過(guò)這個(gè)例子,應(yīng)改為:;;(<)???{???;

7、???;???}、括號(hào)不配對(duì)當(dāng)一個(gè)復(fù)合語(yǔ)句中使用多層括號(hào)時(shí),常會(huì)出現(xiàn)這類錯(cuò)誤;也常出現(xiàn)大括號(hào)不配對(duì)地現(xiàn)象,都是粗心所致.例如:((()'')???();少了一個(gè)右括號(hào).、沒(méi)有注意大寫字母和小寫字母代表不同地標(biāo)識(shí)符例如:(){;;;;}在上例中,編譯系統(tǒng)會(huì)提示變量、沒(méi)有定義.應(yīng)改為:(){;;;;}、引用數(shù)組元素時(shí)誤用圓括號(hào)(){[];(<)??(""());13/13個(gè)人收集整理-ZQ}通常情況下,程序編譯出錯(cuò),但是如果恰好有一個(gè)函數(shù)(),則通常情況都可以通過(guò)編譯,那查起錯(cuò)誤來(lái)就更麻煩了.dvzfv。、引用數(shù)組元素

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。