介紹C語言的常見錯誤

2010-08-28 10:44:50來源:西部e網(wǎng)作者:

  1. 注意大、小寫是兩個不同的變量。

  如:int a=2;

  printf("%d",A);

  在編譯時會出現(xiàn)錯誤,認(rèn)為A沒有定義。

  

  2. 一定要注意分子式中分子的書寫。

  如:有一個公式為c=5(f-32)/9,5、9整除結(jié)果為0,不論f取何值,其結(jié)果都為0。后來我把5改為5.0,再運行ok!另外,還有“%”是求余符號,兩個數(shù)必須要求都是整數(shù),若是實數(shù),必會出錯。所以一定要注意數(shù)學(xué)公式的書寫與C語言公式的區(qū)別。

  

  3. 要注意“=”與“==”的使用。

  “=”是賦值運算符,“==”是關(guān)系運算符。

  如:if (a==x) a=x+2;

  前者是進行比較,a是否和x相等,后者表示如果a和x相等,把x+2值賦給a。

  

  4. 輸入輸出的數(shù)據(jù)類型與所使用的格式說明符不一致。

  例:若a已定義為整型,b已定義為實型。

  a=3;b=3.2;

  printf("%f%d",a,b);

  編譯時不給出錯誤提示,但運行結(jié)果與題意不符。

  

  5. 文件名中不能出現(xiàn)空格。

  若出現(xiàn)空格,就會出現(xiàn)這樣的錯誤提示:“Unable to open input file”。

  

  6. 應(yīng)注意分號(;)的使用。

  在包含頭文件后面和main()后面以及自定義函數(shù)頭后面不能加分號。若是出現(xiàn)“;”,錯誤提示為:“Declaration syntax error”。

  

  7.若程序中要用到一些庫函數(shù),在main()前面必須要包含相應(yīng)的頭文件。

  如在程序里用到sqrt()函數(shù),而在前面沒有包含頭文件math.h,在編譯時不會給出錯誤提示,但其運行結(jié)果是錯誤的。

  

  8. 在定義變量時,數(shù)組名和變量名不允許重名。

  如:float x[2],x=4.0;

  

  9. 數(shù)組長度只能是常量,不能是變量。

  如:int n=10,m[n];

  定義方式是錯誤的。

  

  10.注意“%s”與“%c”的使用。

  前者是輸出字符串,后者是輸出單字符。

  

  11.多個字符串的輸入,可以通過scanf函數(shù)和gets函數(shù)。

  例如:scanf(" %s%s%s",str1,str2,str3),在多個字符串之間用一個或多個空格分隔;若使用gets函數(shù),應(yīng)為(gets(str1);gets(str2);gets(str3);)字符串之間用回車符作分隔。通常情況下,接受短字符用scanf函數(shù),接受長字符用gets函數(shù)。而getchar函數(shù)每次只接受一個字符,經(jīng)常c=getchar()這樣來使用。

  

  12.注意字符與字符串的區(qū)別。

  如:char c; c="a";這樣書寫是錯誤的。字符常量是由一對單引號括起來的單個字符,字符串常量是一對雙引號括起來的字符序列。C規(guī)定以"\0"作字符串結(jié)束標(biāo)志,它是由系統(tǒng)自動加上的,所以字符串"a"實際上包含兩個字符:'a'和'\0',而把它賦給一個字符變量是不行的。

  

  13.進行定義數(shù)組時,若想賦值,應(yīng)直接賦值。

  如:int a[5]; a[5]={1,2,3,4,5};這樣書寫是錯誤的而且也不容易檢查。根據(jù)需要,若需要5個變量,要求從a[1]開始到a[5],可以定義int a[6]。

  

  14.注意if (表達式)與 while (表達式)中的圓括號( )不能省略,否則也會出現(xiàn)編譯錯誤。

  

  15.在printf函數(shù)中,除了輸出字符串常量可以不用格式控制外,其余的都不能省略。

  如:printf("china")這樣書寫是正確的,而printf(a)就是錯誤的。

  

  16.要注意“,”與“;”的使用。

  逗號一般有三個用途:第一,用于變量定義之間的間隔,如int x=0,y,z;第二,用于for 循環(huán)時多個變量初始化之間的間隔;第三,用于函數(shù)像printf 與scanf中格式控制與地址列表之間的間隔,其他情況下一般用分號。

  

  17.注意scanf的使用。

  若要輸入多個變量,一定要注意格式控制之間的間隔與輸入的字符或數(shù)值型數(shù)據(jù)之間的間隔要一致。如:scanf("%d,%d",&&a,&&b),應(yīng)當(dāng)這樣輸入數(shù)據(jù)“12,23”,如果scanf("%d %d",&&a,&&b),應(yīng)當(dāng)輸入“12 23”,中間有一個或多個空格都可以。

  18.C語言中的標(biāo)點符號都是半角標(biāo)點符號。

  總之,要想學(xué)好、掌握好一門程序設(shè)計語言,沒有什么好的快捷方法,只有不斷地練,不斷地實踐,在不斷地犯錯誤中積累經(jīng)驗,實踐出真知。我相信,只要堅持不懈的努力,設(shè)計程序的能力會有很大的提高。
關(guān)鍵詞:c