C語言常見錯(cuò)誤分析_第1頁
C語言常見錯(cuò)誤分析_第2頁
C語言常見錯(cuò)誤分析_第3頁
C語言常見錯(cuò)誤分析_第4頁
C語言常見錯(cuò)誤分析_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、123如果輸入如果輸入a的值為的值為0, 就會(huì)出現(xiàn)錯(cuò)誤。就會(huì)出現(xiàn)錯(cuò)誤。 因此程序應(yīng)能因此程序應(yīng)能適應(yīng)不同的數(shù)據(jù),適應(yīng)不同的數(shù)據(jù), 或者說能經(jīng)受各種數(shù)據(jù)的或者說能經(jīng)受各種數(shù)據(jù)的“考考驗(yàn)驗(yàn)” , 具有具有“健壯性健壯性”4C要求對程序中用到的每一個(gè)變量都必要求對程序中用到的每一個(gè)變量都必須定義其類型,上面程序中沒有對須定義其類型,上面程序中沒有對x、y進(jìn)行定義。應(yīng)在函數(shù)體的開頭加進(jìn)行定義。應(yīng)在函數(shù)體的開頭加: intx,y;5并不是按照賦值的規(guī)則進(jìn)行轉(zhuǎn)換并不是按照賦值的規(guī)則進(jìn)行轉(zhuǎn)換(如把如把4.5轉(zhuǎn)換成轉(zhuǎn)換成4),而是將數(shù)據(jù)在存儲單元中的形式按格式符,而是將數(shù)據(jù)在存儲單元中的形式按格式符的要求組織

2、輸出的要求組織輸出(如如b占占4個(gè)字節(jié),只把最后兩個(gè)個(gè)字節(jié),只把最后兩個(gè)字節(jié)中的數(shù)據(jù)按字節(jié)中的數(shù)據(jù)按%d,作為整數(shù)輸出,作為整數(shù)輸出)6C語言要求指明語言要求指明“向哪個(gè)地址標(biāo)識的單元送值向哪個(gè)地址標(biāo)識的單元送值”。應(yīng)寫成。應(yīng)寫成scanf(%d%d,&a,&b);7對對scanf函數(shù)中格式字符串中除了格式說明符外,對其他函數(shù)中格式字符串中除了格式說明符外,對其他字符必須按原樣輸入。字符必須按原樣輸入。想在屏幕上顯示一行信息:想在屏幕上顯示一行信息:input a & b:scanf(input a & b:%d,%d,&a,&b);可以另加一個(gè)

3、可以另加一個(gè)printf函數(shù)語句:函數(shù)語句:printf(input a & b:);scanf(%d,%d,&a,&b);8C編譯系統(tǒng)將編譯系統(tǒng)將(a=b)作為賦值表達(dá)式處理,將作為賦值表達(dá)式處理,將b的的值賦給值賦給a,然后判斷,然后判斷a的值是否零,若為非零,則的值是否零,若為非零,則作為作為“真真”;若為零作為假。如果若為零作為假。如果a的值為的值為3,b的的值為值為4這種錯(cuò)誤在編譯時(shí)是檢查不出來的,但運(yùn)行結(jié)這種錯(cuò)誤在編譯時(shí)是檢查不出來的,但運(yùn)行結(jié)果往往是錯(cuò)的。而且由于習(xí)慣的影響,程序設(shè)計(jì)果往往是錯(cuò)的。而且由于習(xí)慣的影響,程序設(shè)計(jì)者自己往往也不易發(fā)覺。者自己往往

4、也不易發(fā)覺。9t=a; a=b; b=t 10由于在由于在if(ab)后加了分號,因此后加了分號,因此if語句到此結(jié)束。即語句到此結(jié)束。即當(dāng)當(dāng)(ab)為真時(shí),執(zhí)行一個(gè)空語句。本來想為真時(shí),執(zhí)行一個(gè)空語句。本來想ab時(shí)不時(shí)不輸出上述信息,但現(xiàn)在輸出上述信息,但現(xiàn)在printf函數(shù)語句并不從屬于函數(shù)語句并不從屬于if語語句,而是與句,而是與if語句平行的語句。不論語句平行的語句。不論ab還是還是ab,都輸出都輸出“a is larger than b”。11又如先后輸入又如先后輸入10個(gè)數(shù),每輸入一個(gè)數(shù)后個(gè)數(shù),每輸入一個(gè)數(shù)后輸出它的平方值:輸出它的平方值:for(i=0;i10;i+); scan

5、f(%d,&x); printf(%dn,x*x); 由于在由于在for()后加了一個(gè)分號,使循環(huán)體變成了后加了一個(gè)分號,使循環(huán)體變成了空語句。只能輸入一個(gè)整數(shù)并輸出它的平方值。空語句。只能輸入一個(gè)整數(shù)并輸出它的平方值。在在if、for、while語句中,不要畫蛇添足多加分號。語句中,不要畫蛇添足多加分號。12上面的語句只是重復(fù)了上面的語句只是重復(fù)了sum+1的操作,而且循環(huán)永不終止。的操作,而且循環(huán)永不終止。應(yīng)改為應(yīng)改為while(i=100) sum=sum+i; i+; 1314C語言中對數(shù)組的定義或引用數(shù)組元素時(shí)必須用方括弧。語言中對數(shù)組的定義或引用數(shù)組元素時(shí)必須用方括弧。15

6、數(shù)組只包括數(shù)組只包括a0到到a910個(gè)元素,因此用個(gè)元素,因此用a10就超出就超出a數(shù)組數(shù)組的范圍了。的范圍了。16在在C語言中,數(shù)組名代表數(shù)組首地址,不能通過數(shù)語言中,數(shù)組名代表數(shù)組首地址,不能通過數(shù)組名輸出組名輸出4個(gè)整數(shù)。個(gè)整數(shù)。17編譯出錯(cuò)。編譯出錯(cuò)。str是數(shù)組名,代表數(shù)組首地址。在編譯時(shí)是數(shù)組名,代表數(shù)組首地址。在編譯時(shí)對對str數(shù)組分配了一段內(nèi)存單元,因此在程序運(yùn)行期間數(shù)組分配了一段內(nèi)存單元,因此在程序運(yùn)行期間str是一個(gè)常量,不能再被賦值。是一個(gè)常量,不能再被賦值。如果把如果把“char str4;”改成改成“char *str;”,則程序正確。,則程序正確。此時(shí)此時(shí)str是指

7、向字符數(shù)據(jù)的指針變量,是指向字符數(shù)據(jù)的指針變量,str=“Computer and c”是合法的,它將字符串的首地址賦給指針變量是合法的,它將字符串的首地址賦給指針變量str.18應(yīng)當(dāng)改為應(yīng)當(dāng)改為charp,c20;p=c;scanf(%s,p);19當(dāng)當(dāng)score的值為的值為5時(shí),輸出為時(shí),輸出為?*case只起標(biāo)號的作用,而不起判斷作用只起標(biāo)號的作用,而不起判斷作用20sex是字符變量,只能存放一個(gè)字符。而字符常是字符變量,只能存放一個(gè)字符。而字符常量的形式是用單引號括起來的,應(yīng)改為量的形式是用單引號括起來的,應(yīng)改為sex=M;“M”是用雙引號括起來的字符串,它包括兩個(gè)是用雙引號括起來的字符串,它包括兩個(gè)字符:字符:M和和0,無法存放到字符變量,無法存放到字符變量sex中。中。2122企圖通過企圖通過a的改變使指針下移,每次指向欲輸入數(shù)據(jù)的改變使指針下移,每次指向欲輸入數(shù)據(jù)的數(shù)組元素。它的錯(cuò)誤在于不了解數(shù)組名代表數(shù)組的數(shù)組元素。它的錯(cuò)誤在于不了解數(shù)組名代表數(shù)組首地址,它的值

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論