C陷阱與缺陷 筆記 1

2021-07-27 20:05:38 字數 681 閱讀 2794

第一章 詞法分析

1.1關於「=」和「==」的區別

主要問題在於這兩個運算子在if的條件語句中出現時的問題。

解決:如果if的條件中需要「=」賦值語句,則顯式表達該語句的意思。比如判斷賦值後的值是否為0,可以if( ( variable = function() ) != 0 ).

1.2 「&」和「&&」,「|」和「||」

基本就是錯寫的問題。含義不同。

1.3 詞法分析的問題

詞法分析有「貪心」的特點,即盡可能多地讀入乙個字元,因此可能讀入的內容與程式猿想表達的內容不同。比如x除以p所指向的內容再賦值給y,寫成y=x/*p,但「/*」會被當作乙個字元,這時如果後面有注釋語句「*/」,程式就不會報錯,而只將x賦值給y。

解決:1.不同符號之間用空格隔開,這樣可以避免歧義。2.顯式使用括號表達操作符的運算順序。

1.4第乙個字元是0的整型常量會被當作八進位制數

解決:別這麼幹。

1.5 字元與字串

單引號和雙引號的使用問題。單引號引起的乙個字元實際上代表乙個整數,決定於編譯器使用的字符集。雙引號引起的是字串加『\0』。

解決:記得字串用雙引號。

C陷阱與缺陷1

一 詞法分析 將程式分解成符號的過程 p.s 程式中的單個字元孤立起來沒有任何意義,只要結合上下文才有意義。1.不同於 賦值運算子 關係運算子 注意 不要把賦值運算子用成了關係運算子 也不要把關係運算子用成了賦值運算子 當確實需要對變數賦值並檢查該變數的新值是否為0時,最好的處理方法是 顯式地進行比...

C陷阱與缺陷 筆記

這本書很薄,看目錄感覺講的也很基礎,估計能較快看完。算是開始閱讀前陣子買的那波書的熱身吧。學過編譯原理,我們應當了解,編譯器的工作基本過程。在詞法分析中,不同編譯器的不同設定,會帶來不同的問題。雖然很是細微,但是如果出錯,可能編譯器不提示,讓人抓狂.int a 0195 int b 0215 int...

C陷阱與缺陷 筆記

fortan formula translator 公式翻譯程式語言 fibonacci 斐波那契 為什麼n 的含義是n 0,而不是n 0?a b的含義是?賦值操作符為什麼是 而不是 ascii碼 貪心原則?10是否能表示成010?單引號括起來的乙個字元表示乙個整數,雙引號括起來的乙個字元代表乙個指...