亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        C語言程序調(diào)試常用技巧與常見錯誤分析

        2012-04-12 00:00:00高婷
        消費電子 2012年19期

        摘要:在C語言程序的開發(fā)過程中經(jīng)常會伴隨著多次對C語言程序進行修改調(diào)試的過程。本文討論了C語言程序調(diào)試中常用技巧,分析了調(diào)試中常見錯誤,旨在促進我們編寫出正確的程序,提高編程效率。

        關(guān)鍵詞:C語言;程序調(diào)試;常用技巧;常見錯誤

        中圖分類號:TP312.1 文獻標識碼:A 文章編號:1674-7712 (2012) 18-0032-01

        當我們完成了C語言程序的源程序的編寫之后,我們要使用C語言的編譯器將其翻譯成計算機能夠執(zhí)行的二進制代碼形式的目標程序,再通過連接,最終形成可執(zhí)行程序。但這個過程中可能會出現(xiàn)各類問題。比如編譯未通過,連接未通過,或是生成了可執(zhí)行程序,但并非我們的預(yù)期目標。

        所謂程序調(diào)試,是指對程序的查錯和排錯。調(diào)試程序一般應(yīng)經(jīng)過人工檢查,即靜態(tài)檢查;上機調(diào)試,即動態(tài)檢查;運行程序,試驗數(shù)據(jù)及檢查和分析錯誤原因等幾個步驟。

        程序調(diào)試是一項細致深入的工作,需要下功夫、動腦子、善于累積經(jīng)驗。在程序調(diào)試過程中往往反映出一個人的水平、經(jīng)驗和科學態(tài)度。上機調(diào)試程序的目的決不是為了“驗證程序的正確性”,而是“掌握調(diào)試方法和技術(shù)”。

        一、調(diào)試過程中的一些常用技巧

        1.先簡后繁。先用一組簡單的數(shù)據(jù)對程序進行測試,檢驗各函數(shù)是否有出錯現(xiàn)象,然后用復(fù)雜數(shù)據(jù)對程序進行調(diào)試,直到確定程序?qū)φ?shù)據(jù)沒有錯誤為止。

        2.由大到小。出現(xiàn)錯誤時,要逐步縮小可能出現(xiàn)錯誤的范圍,從整個程序到指定函數(shù),再到指定區(qū)域,再到指定行。在對程序縮小范圍或?qū)幾g沒通過的程序縮小錯誤范圍時可以用發(fā)“/* */”來進行調(diào)試,確定正常范圍,縮小錯誤范圍。

        3.單步調(diào)試。編輯完C語言源程序并保存后,右按F8鍵進行主函數(shù)程序單步執(zhí)行,如果源程序無語法錯誤,則每按一次F8鍵執(zhí)行一句主函數(shù)程序,同時可用Ctrl+F7組合鍵設(shè)置所要跟蹤的變量,以查看程序的執(zhí)行進程,從而更容易查出程序的錯誤。但是,F(xiàn)8鍵只能單步執(zhí)行主函數(shù)程序,它將調(diào)用非主函數(shù)視為一條語句執(zhí)行,并不能轉(zhuǎn)到被調(diào)函數(shù)的內(nèi)部進行語句單步運行,所以在有些程序出錯時,不能精確查出出錯位置。因此,當主函數(shù)調(diào)用其它函數(shù)時,應(yīng)當使用F7鍵,它能在F8鍵功能的基礎(chǔ)之上,進一步深入到被調(diào)用函數(shù)內(nèi)部,從而真正做到程序單步執(zhí)行,即每按一次F7鍵,僅執(zhí)行一條語句,遇到函數(shù)調(diào)用就轉(zhuǎn)到被調(diào)用函數(shù)內(nèi)部執(zhí)行語句。當使用F8或F7進行單步調(diào)試時,應(yīng)當用Ctrl+F7進行變量跟蹤。

        4.設(shè)置斷點。斷點就是程序運行中可能會中斷的地方,方便開發(fā)者在程序運行的過程中查看程序當前的運行狀態(tài),比如變量的值、函數(shù)的返回值等等。F9用于在當前光標所在前行下斷點,如果當前行已經(jīng)有斷點,則取消斷點。有的地方不能下斷點,比如空行、基本類型定義語句(未初始化)等等非執(zhí)行語句。

        二、常見錯誤分析

        在實際的C語言編程過程中可能會出現(xiàn)各種各樣的錯誤。這其中可能有算法錯誤,有因為對C語言中的某些語法知識理解的不正確而產(chǎn)生的錯誤,還有因為疏怱大意而產(chǎn)生的程序的錄入錯誤等等。這些錯誤中,算法錯誤必須經(jīng)過后期的試運行和調(diào)試才能解決,而其他錯誤是可以經(jīng)過訓練能夠避免的。

        (一)由于語法知識理解不正確而導(dǎo)致的錯誤

        這類錯誤有時并不能被馬上發(fā)現(xiàn),因為有些情況下錯誤會被編譯器識別并報錯,而有些卻不能被編譯器識別,但運行結(jié)果卻和預(yù)計的情況不一致。以下是在這方面常見的一些出錯的情況。

        1.轉(zhuǎn)義字符的用法不當。決不能用的字符是由單個字符組成,而轉(zhuǎn)義字符卻是很特殊的一類字符,它是以一個鍵盤符號反斜杠“\”開始后跟上單個字符或是若干個字符組成的,通常用來表示鍵盤上的控制代碼或特殊符號,例如回車換行符、響鈴符號等。程序設(shè)計過程中有時不能正確地區(qū)分轉(zhuǎn)義字符和普通字符。

        2.有符號型轉(zhuǎn)換成無符號型。在數(shù)據(jù)類型中,有時候會遇到將有符號的數(shù)據(jù)轉(zhuǎn)換成無符號的數(shù)據(jù)。要想解決這個問題,我們一定要明白數(shù)據(jù)在計算機中是如何存儲的。數(shù)據(jù)在機器中的存儲是以二進制補碼形式存儲,正數(shù)的符號“+”用二進制0表示,而負數(shù)的符號“-”用1來表示,正數(shù)的原碼補碼相同,但是負數(shù)的補碼是其原碼的二進制位取反加1。這樣來回轉(zhuǎn)換很麻煩,也容易搞錯。

        3.“%”的連續(xù)使用。在C語言中“%”作為格式描述字符用在輸入輸出語句中,當我們需要將多個 “%”一起作用時則應(yīng)特別注意。

        4.break語句和continue語句。如果程序設(shè)計者搞不清楚break語句和continue語句,沒有真正理解兩者的含義,所以也容易犯錯誤。這兩個語句都可以用在循環(huán)語句中,但兩者的作用不同。break語句主要的作用是用來跳出該循環(huán),提前結(jié)束循環(huán),接著執(zhí)行循環(huán)語句下面的語句;而continue語句主要作用是結(jié)束本次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語句,接著進行下一次是否執(zhí)行循環(huán)的判定。

        5.函數(shù)參數(shù)值傳遞。在函數(shù)參數(shù)傳遞的過程中,很多設(shè)計者很容易搞錯實參在什么時候值不變,什么時候傳值后改變。

        6.帶參宏定義的展開。C語言中帶參的宏定義雖然看上去很簡單,如果沒有真正理解宏定義的話,在宏展開的時候很容易搞錯。宏定義是通過#define開頭的編譯預(yù)處理命令來實現(xiàn),在調(diào)用宏的時候要進行展開,并且再用實參去代換形參。

        (二)錄入過程中常見的錯誤

        在源程序編輯過程中由于疏怱大意而產(chǎn)生的錄入錯誤在所有的錯誤中不在少數(shù),甚至占更大的比例,常見的錯誤有誤把“=”作為“等于”比較符;使用自加(++)和自減(--)運算符時出錯;混淆字符和字符串的表示形式;語句后面漏分號;輸入輸出的數(shù)據(jù)的類型與所用格式說明符不一致;忘記定義變量;未注意int型數(shù)據(jù)的數(shù)值范圍;輸入時數(shù)據(jù)的組織與要求不符;在不該加分號的地方加了分號;輸入變量時忘記使用地址符;括弧不配對;switch語句的各分支中漏寫break語句;引用數(shù)組元素時誤用了圓括弧;對應(yīng)該有花括弧的復(fù)合語句,忘記加花括??;在用標識符時,忘記了大寫字母和小寫字母的區(qū)別;在定義數(shù)組時,將定義的“元素個數(shù)”誤認為是“可使用的最大下標值”;誤以為數(shù)組名代表數(shù)組中全部元素;對二維或多維數(shù)組的定義和引用的方法不對;混淆字符數(shù)組與字符指針的區(qū)別;用指針變量之前沒有賦值;不同類型的指針混用;所調(diào)用函數(shù)在調(diào)用語句之后才定義,而又在調(diào)用前未加說明;將函數(shù)的形參和函數(shù)中的局部變量一起定義;函數(shù)的實參和形參類型不一致;沒有注意函數(shù)參數(shù)的求值順序;混淆數(shù)組名與指針變量的區(qū)別;誤認為形參值的改變會影響實參的值;混淆結(jié)構(gòu)體類型與結(jié)構(gòu)體變量的區(qū)別,對一個結(jié)構(gòu)體類型賦值;使用文件時忘記打開,或打開方式與使用情況不匹配。

        以上只是列舉了一些初學者常出現(xiàn)的錯誤,這些錯誤大多是由于對C語言的語法不熟悉造成的。對C語言使用多了,熟練了,錯誤自然就會減少了。在深入使用C語言后,還會出現(xiàn)其他一些更深入、更隱蔽的錯誤。

        參考文獻:

        [1]韓京洋,向志強.C語言調(diào)試技巧[J].電腦編程技巧與維護,2012,16.

        国产日本精品视频一区二区| 18禁真人抽搐一进一出在线| 野花社区www高清视频| 毛片无遮挡高清免费久久| 国产精品日日摸夜夜添夜夜添| 中文字幕亚洲精品人妻| 日本一区二区高清精品| 福利视频一区二区三区| 中文字幕人妻熟在线影院| 91在线精品老司机免费播放| 中文字幕无码免费久久99| 中文字幕色一区二区三区页不卡 | 亚洲av无码乱码精品国产| 免费视频成人片在线观看| 国产亚洲美女精品久久久| 国产精品18久久久久久首页| 极品夫妻一区二区三区| 一本色道久久综合狠狠躁篇| 国产农村妇女毛片精品久久| 99福利网| 国产三级精品三级在线| 国产区女主播在线观看| 三级4级全黄60分钟| 精品国产自产久久久| av天堂手机在线免费| 亚洲av无一区二区三区综合| 免费人成黄页网站在线一区二区 | 黄污在线观看一区二区三区三州| 又大又粗欧美黑人aaaaa片| 99re8这里有精品热视频免费| 国产av日韩a∨亚洲av电影| 国产主播一区二区在线观看| 亚洲视频观看一区二区| 欧洲美女黑人粗性暴交视频| 人人妻人人澡人人爽欧美二区| 亚洲第一区无码专区| 国产激情视频高清在线免费观看| 美女张开腿黄网站免费| 一本色道av久久精品+网站| 超高清丝袜美腿视频在线| 久久精品人搡人妻人少妇|