讀c陷阱與缺陷,作為自己的讀書筆記

2021-08-30 11:07:41 字數 482 閱讀 6752

詞法問題

1:=為賦值符號

==為比較符號

例如:x=y是將y的值賦給x

x==y則是判斷x和y是否相等(這個問題我剛學程式設計甚至大學畢業的時候還是犯錯)

2:&和|是按位運算子

&&和||是邏輯運算子

3:詞法分析中的貪心法

如果輸入流截止至某個字元之前都已經被分解為乙個個符號,那麼下乙個符號將包括從該字元之後可能組成乙個符號的最長字串。

例如:y=x/*p 此語句並不能計算x除以p指向的數,而是將x的值賦給y,/*表示後面的則是注釋

4:整型常量

整型常量第乙個字元是數字0,則該常量將被視為八進位制數。

10:十進位制表示仍是10

010:十進位制表示則是8

5:字元和字串

單引號引起的乙個字元實際上代表乙個整數   

雙引號引起的字串代表的是乙個指向無名陣列起始字元的指標

』a'和「a」含義並不一樣

讀C陷阱與缺陷筆記

1.字元與字串 1 用單引號引起的乙個字元實際上代表乙個整數,整數值對應於該字元在編譯器採用的字符集中的序列值。eg 對於採用ascii字符集的編譯器而言,a 的含義與0141 八進位制 或者97 十進位制 嚴格一致。2 用雙引號引起的字串,代表的是乙個指向無名陣列起始字元的指標,該陣列被雙引號之間...

《C缺陷與陷阱》讀書筆記

一 為什麼很多程式設計規範上要求單字元符號兩邊用空格隔開呢?如 a 2 最好不要寫成 a 2 在 c陷阱與缺陷 中詞法陷阱部分講到 如y x p,原本想表達的意思是p指標指向除數,但實際編譯過程中,編譯器會將 理解為一段注釋的開始,編譯器將不斷地讀入字元,直到 出現為止 這一錯誤也在 c專家程式設計...

《C陷阱與缺陷》讀書筆記

如果乙個整型常數的第乙個字元是數字0,那麼該常量將被視作八進位制數。如0195相當於十進位制數141 c語言中,else始終與同一對括號內最近的未匹配的if結合。switch語句中的case語句若在結尾處無break,程式將會繼續執行下一條case語句 非陣列的指標 include char r,s...