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

2021-06-19 08:52:33 字數 398 閱讀 4385

一、

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

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

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

四、(待續)

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

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

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

第二章 語法陷阱 2 1 理解函式宣告 任何c變數的宣告都由兩部分組成 型別以及一組類似表示式的宣告符 declarator float g h 表示 g 與 h 是浮點表示式。因為 結合優先順序高於 g 也就是 g g是乙個函式,該函式的返回值型別為指向浮點數的指標。同理,可以得出h是乙個函式指標...

C陷阱與缺陷讀書筆記(二)

第三章 3.1 指標與陣列 理解 int calendar 12 31 c語言中只有一維陣列,calendar是乙個一維陣列,該陣列含有12個陣列型別的元素,其中每個元素都 是乙個含有31個整型元素的陣列 int monthp 31 monthp 是乙個擁有31個整型元素的陣列,mouthp是乙個 ...