C語言學習的一些陷阱
在C語言中,符號==是作為賦值運算,符號==是作為比較的。一般而言,賦值運算比比較運算出現(xiàn)得更頻繁,因此字符較少的符號=就被賦予了更常用的含義——賦值操作。賦值操作在平常更廣泛被我們使用,這就導致了一個潛在的問題,程序員本意要做比較運算,卻寫成了賦值運算。
2、程序中的“/*”
當C編譯器讀入一個字符“/”之后又跟了一個字符“*”,那么編譯器就必須做出判斷:是將其作為兩個分別的字符對待,還是合起來作為一個符號對待。不同的編譯器對于“/*”會產(chǎn)生不同的影響。
例:要求寫一個測試程序,無論是對允許嵌套注釋的編譯器,還是對不允許嵌套注釋的編譯器,該程序都能正常通過編譯,但是這兩種情況下程序執(zhí)行的結(jié)果卻不相同。
解:/*/*/0*/**/1這一行表達式,如果編譯器允許嵌套注釋的話,即可理解為:/* /* /0 */ * */ 1。兩個/*和兩個*/正好匹配,所以上式的值就是1.如果不允許嵌套注釋的話,注釋中的/*將被忽略。因此上面的表達式可以理解為:/* / */ 0* /* */ 1,他的值就是0*1。
3、字符和字符串
用單引號引起的一個字符實際上表示一個整數(shù),例如‘a(chǎn)’的含義和0141(八進制)或者97(十進制)嚴格一致。
用雙引號一起的是字符串,表示的是一個數(shù)組起始字符的指針,該數(shù)組末尾是以字符‘ 主站蜘蛛池模板: 杭锦旗| 石嘴山市| 申扎县| 彩票| 汉川市| 余姚市| 连州市| 孙吴县| 济宁市| 哈巴河县| 沈阳市| 龙川县| 通州市| 长垣县| 临安市| 嘉峪关市| 吐鲁番市| 西畴县| 淮北市| 伊宁市| 乐业县| 平顶山市| 连山| 铁岭市| 乐都县| 乃东县| 松阳县| 邓州市| 明水县| 蛟河市| 酉阳| 霍邱县| 曲阳县| 达尔| 双峰县| 铜陵市| 沧源| 同仁县| 澄城县| 同仁县| 若羌县|