天天看點

學習C語言你必須注意...

衆所周知,c語言具有簡潔緊湊,靈活友善,運算符豐富,資料類型豐富,表達方式靈活實用等特點,是以c語言程式設計更主動、靈活。它文法限制不太嚴格,程式設計自由度大,如對整型量與字元型資料及邏輯型資料可以通用等。

但是事物都有兩面性,正是因為這個靈活給程式的調試帶來了許多不便,尤其對初學c語言的人來說,經常會出一些連自己都不知道錯在哪裡的錯誤。看着有錯的程式,不知該如何下手,從哪裡改起。這裡羅列了一些c程式設計時常犯的錯誤,友善初學的小夥伴可以有個參考,做到心中有數,不至于毫無頭緒。

學習C語言你必須注意...

1.書寫辨別符時,忽略了大小寫字母的差別。

main()

{

int a=5;

printf("%d",a);

}

編譯程式把a和a認為是兩個不同的變量名,而顯示出錯資訊。c認為大寫字母和小寫字母是兩個不同的字元。習慣上,符号常量名用大寫,變量名用小寫表示,以增加可讀性。

2.忽略了變量的類型,進行了不合法的運算。

float a,b;

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

%是求餘運算,得到a/b的整餘數。整型變量a和b可以進行求餘運算,而實型變量則不允許進行“求餘”運算。

3.将字元常量與字元串常量混淆。

char c;

c="a";

在這裡就混淆了字元常量與字元串常量,字元常量是由一對單引号括起來的單個字元,字元串常量是一對雙引号括起來的字元序列。c規定以“\”作字元串結束标志,它是由系統自動加上的,是以字元串“a”實際上包含兩個字元:‘a'和‘\',而把它賦給一個字元變量是不行的。

4.忽略了“=”與“==”的差別。

在許多進階語言中,用“=”符号作為關系運算符“等于”。如在basic程式中可以寫

if (a=3) then …

但c語言中,“=”是指派運算符,“==”是關系運算符。如:

if (a==3) a=b;

前者是進行比較,a是否和3相等,後者表示如果a和3相等,把b值賦給a。由于習慣問題,初學者往往會犯這樣的錯誤。

5.忘記加分号。

分号是c語句中不可缺少的一部分,語句末尾必須有分号。

a=1

b=2

編譯時,編譯程式在“a=1”後面沒發現分号,就把下一行“b=2”也作為上一行語句的一部分,這就會出現文法錯誤。改錯時,有時在被指出有錯的一行中未發現錯誤,就需要看一下上一行是否漏掉了分号。

{ z=x+y;

t=z/100;

printf("%f",t);

對于複合語句來說,最後一個語句中最後的分号不能忽略不寫(這是和pascal不同的)。

6.多加分号。

對于一個複合語句,如:

};

複合語句的花括号後不應再加分号,否則将會畫蛇添足。

又如:

if (a%3==0);

i++;

本是如果3整除a,則i加1。但由于if (a%3==0)後多加了分号,則if語句到此結束,程式将執行i++語句,不論3是否整除a,i都将自動加1。

再如:

for (i=0;i<5;i++);

{scanf("%d",&x);

printf("%d",x);}

本意是先後輸入5個數,每輸入一個數後再将它輸出。由于for()後多加了一個分号,使循環體變為空語句,此時隻能輸入一個數并輸出它。

7.輸入變量時忘記加位址運算符“&”。

int a,b;

scanf("%d%d",a,b);

這是不合法的。scanf函數的作用是:按照a、b在記憶體的位址将a、b的值存進去。“&a”指a在記憶體中的位址。

8.輸入資料的方式與要求不符。

①scanf("%d%d",&a,&b);

輸入時,不能用逗号作兩個資料間的分隔符,如下面輸入不合法:

3,4

學習C語言你必須注意...

學習c語言始終要記住“曙光在前頭”和“千金難買回頭看”,“千金難買回頭看”是學習知識的重要方法,就是說,學習後面的知識,不要忘了回頭弄清遺留下的問題和加深了解前面的知識,這是初學的小夥伴最不易做到的,然而卻又是最重要的。學習c語言就是要經過幾個反複,才能前後貫穿,積累應該掌握的c知識。同時不要忘記上機實踐,希望熱愛程式設計的小夥伴可以早日成為大神~