1. 程式人生 > >《C缺陷與陷阱》讀書筆記

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

一、

為什麼很多程式設計規範上要求單字元符號兩邊用空格隔開呢?如“a = 2”最好不要寫成"a=2"。在《C陷阱與缺陷》中詞法陷阱部分講到:如y = x/*p,原本想表達的意思是p指標指向除數,但實際編譯過程中,編譯器會將/*理解為一段註釋的開始,編譯器將不斷地讀入字元,直到*/出現為止(這一錯誤也在《C專家程式設計》的46頁中講過,舉的例字是"ratio= *x/*y")。也就是說,改語句直接將x的值賦值給y,根本不會顧及到後面出現的*p。但是如果將上面的語句寫成“y = x / *p”或者"y=x/(*p)",得到的實際效果才是一樣的。

理由:c語言編譯器遵循貪心演算法,從左到右將字元一個個讀入,如果該字元可能組成一個符號,那麼再讀入下一個字元。單個符號直接不能有空格,否則該符號將被分解為2個獨立的部分。

二、

如果整型的第一個字元時數字0,那麼該常量將被視做八進位制數,0195會被解釋為141(十進位制)。

三、

單引號括起的一個字元代表一個整數,雙引號括起的一個字元代表一個指標。

四、(待續)