新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > C語言學(xué)習(xí)的一些陷阱

C語言學(xué)習(xí)的一些陷阱

作者: 時間:2014-01-10 來源:網(wǎng)絡(luò) 收藏
1、=和==的不同
在C語言中,符號==是作為,符號==是作為比較的。一般而言,比比較運算出現(xiàn)得更頻繁,因此字符較少的符號=就被賦予了更常用的含義——賦值操作。賦值操作在平常更廣泛被我們使用,這就導(dǎo)致了一個潛在的問題,程序員本意要做比較運算,卻寫成了


2、程序中的“/*”
當C編譯器讀入一個字符“/”之后又跟了一個字符“*”,那么編譯器就必須做出判斷:是將其作為兩個分別的字符對待,還是合起來作為一個符號對待。不同的編譯器對于“/*”會產(chǎn)生不同的影響。
例:要求寫一個測試程序,無論是對允許嵌套注釋的編譯器,還是對不允許嵌套注釋的編譯器,該程序都能正常通過編譯,但是這兩種情況下程序執(zhí)行的結(jié)果卻不相同。
解:/*/*/0*/**/1這一行表達式,如果編譯器允許嵌套注釋的話,即可理解為:/* /* /0 */ * */ 1。兩個/*和兩個*/正好匹配,所以上式的值就是1.如果不允許嵌套注釋的話,注釋中的/*將被忽略。因此上面的表達式可以理解為:/* / */ 0* /* */ 1,他的值就是0*1。


3、字符和
用單引號引起的一個字符實際上表示一個整數(shù),例如‘a(chǎn)’的含義和0141(八進制)或者97(十進制)嚴格一致。
用雙引號一起的是,表示的是一個數(shù)組起始字符的指針,該數(shù)組末尾是以字符‘