預處理器
巨集:一種對組成
c程式的字元進行變換的方式,而並不作用於程式中的物件。
1.不能忽視巨集定義中的空格
#define f (x) ((x)-1)被翻譯為:f 代表(x)((x)-1)
2.巨集並不是函式
巨集定義中最好把每個引數都用括號括起來,整個結果表示式也應該用括號括起來。
要確保巨集中的引數沒有***(如,引數被求值兩次),盡量不在巨集中使用遞增之類(如,++,--)運算。
使用巨集要注意,巨集展開可能產生非常龐大的表示式,從而占用了太大的空間。
3.巨集並不是語句
巨集定義末尾不用加分號
4.巨集並不是型別定義
巨集的乙個常見用途是,使多個不同變數的型別可在乙個地方說明。
c陷阱與缺陷 陷阱
例1 if x y break 這就話的意思就是把y賦值x,判斷x是否為0,實則是在判斷y是否為0 例2 while c c t c n 這句話的意思就是 c t c n 賦值給c,而有 符本身就是不為0的數,所以這就是while 1 的意思。例3 int x 4,p new int p 2 cou...
C語言陷阱與缺陷(5)
庫函式 1.返回整數的getchar函式 記住 getchar的返回型別為int 而不是char.2.更新順序檔案 乙個檔案輸入操作不能隨後緊跟乙個檔案輸出操作,反之亦然。若要同時進行檔案輸入 輸出操作,必須在其中插入 fseek函式的呼叫 用於改變檔案的狀態,使其能正常的讀取 3.緩衝輸出與記憶體...
C陷阱與缺陷
c語言對於符號 包含乙個或多個字元 的識別規則 每乙個符號應該包含盡可能多的字元。也就是說,編譯器將程式分解成符號的方法是,從左到右乙個字元乙個字元地讀入,如果該字元可能組成乙個符號,那麼再讀入下乙個字元,判斷已經讀入的兩個字元組成的字串是否可能是乙個符號的組成部分 如果可能,繼續讀入下乙個字元,重...