詞法問題
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...