新手学习C语言编程的8个致命错误,你中招了吗?
序言
C語言的最大特點是:功能強、使用方便靈活。C編譯的程序對語法檢查并不象其它高級語言那么嚴格,這就給編程人員留下“靈活的余地”。但由于這個靈活給程序的調試帶來了許多不便,尤其對初學C語言的人來說,經常會出一些連自己都不知道錯在哪里的錯誤。
看著有錯的程序,不知該如何改起,積累了一些C編程時常犯的錯誤,寫給各位小伙伴以供參考。
1.書寫標識符時,忽略了大小寫字母的區別
int main(){ int a=5; printf("%d",A);}編譯程序把a和A認為是兩個不同的變量名,而顯示出錯信息。C認為大寫字母和小寫字母是兩個不同的字符。習慣上,符號常量名用大寫,變量名用小寫表示,以增加可讀性。
2.忽略了變量的類型,進行了不合法的運算
main(){ 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.輸入字符的格式與要求不一致
在用“%c”格式輸入字符時,“空格字符”和“轉義字符”都作為有效字符輸入。
scanf(“%c%c%c”,&c1,&c2,&c3);如輸入a b c
字符“a”送給c1,字符“ ”送給c2,字符“b”送給c3,因為%c只要求讀入一個字符,后面不需要用空格作為兩個字符的間隔。
7.輸入輸出的數據類型與所用格式說明符不一致
例如,a已定義為整型,b定義為實型
a=3;b=4.5;
printf(“%f%d\n”,a,b);編譯時不給出出錯信息,但運行結果將與原意不符。這種錯誤尤其需要注意。
8.忽視了while和do-while語句在細節上的區別
(1)
main() {int a=0,I; scanf(“%d”,&I); while(I<=10) {a=a I; I ; } printf(“%d”,a); }(2)
main() {int a=0,I; scanf(“%d”,&I); do ? {a=a I; I ; }while(I<=10); printf(“%d”,a); }可以看到,當輸入I的值小于或等于10時,二者得到的結果相同。而當I>10時,二者結果就不同了。
因為while循環是先判斷后執行,而do- while循環是先執行后判斷。對于大于10的數while循環一次也不執行循環體,而do-while語句則要執行一次循環體。
最后
互聯網科技發展蓬勃興起,抓住風口。為幫助那些往想互聯網方向轉行想學習,卻因為時間不夠,資源不足而放棄的人。
聲明:
本文于網絡整理,版權歸原作者所有,如來源信息有誤或侵犯權益,請聯系我們刪除或授權事宜。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的新手学习C语言编程的8个致命错误,你中招了吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 《我是未来》:在摩天大楼顶端“种田”的乐
 - 下一篇: 股票周线月线代表什么?