標籤:
這兩天複習了之前學習的C語言基礎知識,發現了許多對於初學者來說重要但是卻容易被忽略的問題,在此總結一下,與君共勉。
1、程式中如果用到標頭檔stdio.h的內容,即使不寫#include <stdio.h>程式也可以正常運行,只會警告,不會報錯。這是因為連結程式會自動連結庫函數。所以如果使用了非庫函數的標頭檔,就必須要寫標頭檔,不然程式就會報錯。
2、在使用scanf函數輸入參數時,若以空格作為分隔,如:
int a, b;scanf("%d %d", &a, &b);
在輸入參數時,不僅可以使用空格作為分隔字元,實際輸入tab、斷行符號都可以作為分隔字元。
3、在程式中我們經常用到自加運算子(如:a++),但是如果有人問你10++的寫法對嗎?好多人就不確定了。實際上10++的寫法是錯誤的,因為 a++ 等價於 a=a+1,所以 10++ 應該等價於 10=10+1,顯然是錯誤的。
4、在switch中,我們經常這樣寫:
int a = 0;int b;switch(a){ case 0: b=1; break; default: b=2; break;}
但是如果這樣寫呢?
int a = 0;switch(a){ case 0: int b=1; break; default: int b=2; break;}
事實上,這樣的寫法是錯誤的,因為如果在case中定義了新的變數,必須用{}包住,不然會發生變數範圍不明確的錯誤。正確的寫法應該為:
int a = 0;switch(a){ case 0: { int b=1; break; } default: { int b=2; break; }}
哦,對了。其實呢,switch 中的 default也常被大家忽略,當 所有 case 中的值都不等於 a 的時候,就可以用到 default 啦!
5、同樣作為分支結構的 if 語句也應該注意,在 if 語句中定義新的變數時,必須用{}括起來,不然也會報範圍不明確的錯誤。如:
if(10>6){ int a=5; }
當然,記得 if(10>6)後邊不要加";"哦。
6、在比較大小是,應注意最好將常量值放在運算子的左邊,變數放在右邊。如: if(2 == a),注意C語言中等於是“==”,若寫為“=”則為賦值操作。
7、在是使用sizeof()函數時,注意傳入的參數,如:
int a = 10;sizeof (10); // 正確sizeof 10 ; // 正確sizeof (a); // 正確sizeof a; // 正確sizeof (int); // 正確sizeof int; // 錯誤
黑馬程式員——C語言知識小節------初學者容易忽略的知識點