c語言常見調(diào)試錯誤_第1頁
c語言常見調(diào)試錯誤_第2頁
c語言常見調(diào)試錯誤_第3頁
c語言常見調(diào)試錯誤_第4頁
c語言常見調(diào)試錯誤_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、語言調(diào)試常見錯誤 一、第一類錯誤分析 1在使用變量前未定義。 例如: main() a=1; b=2; printf(dn, a+b); 2語句后面漏寫分號或不該加分號的地方加了分號。 C語言規(guī)定,語句必須以分號結(jié)束,分號是C語句不可缺少的一部分,這也是和其它高級語言不同的一點(diǎn)。初學(xué)者往往容易忽略這個分號。 如: x=1 y=2; 又如在復(fù)合語句中漏寫最后一個語句的分號: t=x; x=y; y=t 3不該有空格的地方加了空格 例如,在用*.*對C程序中的任何部分作注釋時,與*之間都不應(yīng)當(dāng)有空格。 又如,在關(guān)系運(yùn)算符=,=,=和!=中,兩個符號之間也不允許有空格。4定義或引用數(shù)組的方

2、式不對。 C語言規(guī)定,在對數(shù)組進(jìn)行定義或?qū)?shù)組元素進(jìn)行引用時必須要用方括號(對二維數(shù)組或多維數(shù)組的每一維數(shù)據(jù)都必須分別用方括號括起來),例如以下寫法都將造成編譯時出錯: int a(10); int b5,4; printf(dn, b1+2,2); 5混淆字符和字符串 C語言中的字符常量是由一對單引號括起來的單個字符;而字符串常量是用一對雙引號括起來的字符序列。字符常量存放在字符型變量中,而字符串常量只能存放在字符型數(shù)組中。例如, 假設(shè)已說明num是字符型變量,則以下賦值語句是非法的: num=1;6在引用數(shù)組元素或指針變量之前沒對其賦初值。 例如: main() main() int a6

3、,b; int *ptr, i=1; b=a5;*ptr=i 以上兩個程序段在編譯時均會出現(xiàn)警告信息。7混淆數(shù)組名與指針變量 在C語言中,數(shù)組名代表數(shù)組的首地址,它的值是一個常量,不能被修改。例如,在以下程序段中,用a+是不合法的。 main() int i, a10; for (i=0;i10;i+) scanf(d, a+); 8混淆不同類型的指針。 若有以下語句: int *p1, a=1; float *p2; p1=&a; 則賦值語句p2=p1是非法的。9混淆指針說明語句中的*號和執(zhí)行語句中的*號。 設(shè)有以下說明語句: int *p1, i=1; 則 *p1=&i;是

4、不合法的。10誤將函數(shù)形參和函數(shù)中的局部變量一起定義。 例如: fun(x,y) float x, y, z; x+; y+; z=x+y; 11所調(diào)用的函數(shù)在調(diào)用前未定義。 main() float a=10, b=20, c; c=fun(a,b); float fun(x, y) float x, y; x+; y+; 12混淆結(jié)構(gòu)體類型名和結(jié)構(gòu)體變量名。 若定義了以下結(jié)構(gòu)體類型student: struct student long int num; char name20; int age; float score; ; 則賦值語句:student.num=199401;是錯誤的。第

5、二類錯誤分析 1在用scanf函數(shù)給普通變量輸入數(shù)據(jù)時,在變量名前漏寫地址運(yùn)算符&。 如:scanf(dd, x, y); 2在scanf函數(shù)調(diào)用語句中,企圖規(guī)定輸入實型數(shù)據(jù)的小數(shù)位。 如執(zhí)行以下語句: scanf(6.2f, &a);3輸入數(shù)據(jù)時的數(shù)據(jù)形式與要求不符。 用scanf函數(shù)輸入數(shù)據(jù)時,必須注意要與scanf語句中的對應(yīng)形式匹配。如: scanf(d,d,&x, &y); 若按以下形式輸入數(shù)據(jù): 2 4 是不合法。數(shù)據(jù)2和4之間應(yīng)當(dāng)有逗號。4輸入、輸出時的數(shù)據(jù)類型與所用格式說明符不匹配。 例如有以下說明語句: int x=1; float y=2.5

6、; 則運(yùn)行時執(zhí)行語句 printf(x=f, y=dn, x, y); 將給出與原意不符的結(jié)果:(在TURBO C 2.0 下運(yùn)行)5混淆"="和"="。 在C語言中,"="賦值運(yùn)算符,"="是關(guān)系運(yùn)算符。6在不該出現(xiàn)分號的地方加了分號。 例如:if(xy); printf(x is larger than y. n);7對于復(fù)合語句,忘記加花括號。 例如: i=1; a=0; while (i=10) a+=i; i+; printf(a=dn,a);8誤把數(shù)組說明時所定義的元素個數(shù)作為最大下標(biāo)值使用。 C語言規(guī)

7、定,引用數(shù)組元素時下標(biāo)從0開始,即下標(biāo)值的下限為0,而下標(biāo)的上限值是數(shù)組定義時元素個數(shù)減1。9在switch語句的各分支中未使用break語句。 例如: switch(grade) caseA: printf(85 100n); caseB: printf(70 84n); caseC: printf(60 69n); caseD: printf(60n); default: printf(Errorn); 10混淆break語句和continue語句的作用。 例如: do scanf(d,&x); if(x0) break; printf(dn,x); while(x! =0);11使用+或-運(yùn)算符時易犯的錯誤。 如:main() int a5=1,2,3,4,5,*p; p=a; printf(dn,*(p+); 12誤解形參值的變化會影響實參的值。 例如: main() int a=1, b=3; swap

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論