if
(x==0)
}else
if
(x==0)
}
char
*r,*
malloc()
;r=malloc
(strlen
(s)+
strlen
(t)+1)
;if(!r)
strcpy
(r,s)
;strcat
(r,t);.
..free
(r);
# include
void
main()
}
setbuf
(stdout
, buf)
//所有寫入stdout的輸出都使用buf作為輸出緩衝區,直到buf緩衝區被填滿,或者程式設計師直接呼叫fflush, buf緩衝區中的內容才實際寫入到srdout中。緩衝區大小由系統檔案中的bufsiz定義。
//示例
#include
main()
}//該程式由於最後的緩衝內容隨著main函式結束而被釋放,會造成最後快取區的內容丟失。因此有如下兩種解決辦法
static
char buf[bufsiz]
;//宣告為靜態變數
//或者
char
*malloc()
;//使用動態分配緩衝區
setbuf
(stdout
,malloc
(bufsiz)
);
1.提高**的可讀性;
2. 優化系統開銷
3.可維護行好;
# define abs(a,b) ((x)>0 ? (x):(-x))
//正解
//錯解一
# define abs(a,b) ( x>0 ? x : -x)
abs(a-b)
//等價為
a-b>
0? a-b :
-a-b //因為-a-b相當於(-a)-b,因此上式會得到乙個錯誤的結果
//錯解二
# define abs(a,b) (x)>0 ? (x):(-x)
abs(a)+1
//等價為
(x)>0?
(x):
(-x)+1
//相當於x 與 -x+1 作比較
# define mm int
mm* a,b;
//出錯,b並不是指標型別
typedef
int mm
mm* a,b;
7.2 整數的大小
7.3 字元為有符號還是無符號
7.4 移位運算子
7.5 記憶體位置0
7.6大小寫轉換
7.6 首先釋放,然後重新分配
C陷阱與缺陷 筆記
這本書很薄,看目錄感覺講的也很基礎,估計能較快看完。算是開始閱讀前陣子買的那波書的熱身吧。學過編譯原理,我們應當了解,編譯器的工作基本過程。在詞法分析中,不同編譯器的不同設定,會帶來不同的問題。雖然很是細微,但是如果出錯,可能編譯器不提示,讓人抓狂.int a 0195 int b 0215 int...
C陷阱與缺陷 筆記
fortan formula translator 公式翻譯程式語言 fibonacci 斐波那契 為什麼n 的含義是n 0,而不是n 0?a b的含義是?賦值操作符為什麼是 而不是 ascii碼 貪心原則?10是否能表示成010?單引號括起來的乙個字元表示乙個整數,雙引號括起來的乙個字元代表乙個指...
C陷阱與缺陷筆記
第一章 詞法陷阱 1.1 不同於 1.2 與 不同於 與 1.3 詞法分析中的 貪心法 1.4 整型變數 1.5 字元與字串 第二章 語法陷阱 2.1 理解函式宣告 2.2 運算子的優先順序問題 2.3 注意作為語句結束標誌的分號 2.4 switch語句 2.5 函式呼叫 2.6 懸掛 else引...