新聞中心

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

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

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


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


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