閱讀《C陷阱與缺陷》的知識增量

2022-09-19 01:24:10 字數 587 閱讀 1662

看完《c陷阱與缺陷》,忍不住要又一次翻一下,記錄一下與自己的慣性思維不符合的地方。

記錄的是知識的增量。是這幾天的流量,而不是存量。

這本書是在asci c/c89訂製之前寫的。有些地方有疏漏。

char *r,*malloc()

//原文稱不能直接宣告乙個s、t長度之和的陣列,但c99能夠宣告變長陣列,已經能夠了

//記得要把長度加1

r = malloc(strlen(s) + strlen(t) +1);

//必須推斷記憶體是否分配成功

if(!r)

strcpy(r,s);

strcat(r,t);

......

//完畢之後一定要釋放r

free(r);

3.6--n一般比n--執行速度更快。

3.7 運算子&&和||保證兩個運算元從左至右求值。其它運算子的運算元求值順序沒有定義。

比方y[i]

= x[i++]結果是沒有定義的。

3.9 怎樣檢測a+b是否溢位?

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陷阱與缺陷

c語言對於符號 包含乙個或多個字元 的識別規則 每乙個符號應該包含盡可能多的字元。也就是說,編譯器將程式分解成符號的方法是,從左到右乙個字元乙個字元地讀入,如果該字元可能組成乙個符號,那麼再讀入下乙個字元,判斷已經讀入的兩個字元組成的字串是否可能是乙個符號的組成部分 如果可能,繼續讀入下乙個字元,重...

C陷阱與缺陷

1.int num 10 測試一下 num 0 是否 等於 0 num 因為num是首位址 num 0 0 num 2.其實c中只有一維陣列 我們所說的 int a 3 4 只是乙個包含了三個元素 每個元素都是包含了四個整形值的一維陣列 3.int num 10 10 int p num 0 名為n...