=為負值運算子,==比較運算子。在c語言中=座位一種操作符對待,因而重複進行負值操作(如 a = b = c)可以很容易書寫,並且賦值操作語句可以很容易的嵌入到更大的表示式中。
這種使用上的便利性容易導致乙個問題,就是程式設計師本意是作比較運算時,卻無意中寫成了賦值運算,這樣會帶來意想不到的結果,所以,在寫= 與 ==時一定要格外小心。
上面講到 = 和 ==容易搞混,那麼 & 和 && 與 | 和 ||也非常容易被搞混,首先需要明白的是 | 和 & 是位運算子,直接操作的是整數浮點數等值的二進位制,而 || 和 && 是邏輯運算子,使用|| 和 &&的表示式的結果是 true 或者 false ,在我們書寫程式的時候一定要分清二者的作用和使用場景,然後在考慮使用哪個符號來完成你的程式。
c語言中的/ 、*、=只有乙個字元長,成為單字元符號,而c語言中的其他符號 ,例如: == 、/*包括多個字元,成為多字元符號。當編譯器讀到乙個字元」/"後面跟乙個"*"字元,編譯器就要做出判斷:是將它們作為乙個兩個單獨的符號進行對待,還是合起來作為乙個符號進行對待。c語言對於這樣的問題的解決方案可以歸納為乙個簡單的規則:每乙個符號都應該包含盡可能多的字元,也就是說,編譯器將程式分解成符號的方法是,從左到右乙個字元乙個字元的讀入,如果該字元可能組成乙個符號,那麼再讀入下乙個字元,判斷已經讀入的兩個字元組成的字串是否可能是乙個符號的組成部分,如果可能,繼續讀入下乙個字元,重複上述判斷,直到讀入的符號已經不再可能組成有意義的符號。這個策略被稱為」貪心法「。在我們遇到比較發雜的表示式的時候,使用貪心法能很好的讓我們正確的讀懂表示式的含義,例如:表示式 a---b 和
表示式 a-- -b的含義是相同的
而與 a- --b的含義是不同的。
《C陷阱與缺陷》第一章
c陷阱與缺陷 第一章while c c t c n c getc f 此例項本意是遍歷檔案並且跳過空和一些換行符,製表符。但是由於第乙個 寫成了 則此程式變成了。將 c t c n 表示式的值賦給了c,並判斷c的值。由於c恆等於1則這會讀取到檔案最後。如果真的想要實現在判斷中使用 的情況應該寫成 i...
C陷阱與缺陷第一章 詞法「陷阱」
1.不同於 為賦值運算,為比較 2.和 不同於 和 按位運算子 邏輯運算子 3.詞法分析中的 貪心法 c語言的某些符號,例如 只有乙個字元長,還有其他符號,例如 有多個字元。編譯器1將程式分解成符號的方法是,從左到右乙個字元乙個字元地讀入,如果判斷已經讀入的兩個字元組成的字串是否可能是乙個符號的組成...
C陷阱與缺陷 第一章 詞法陷阱
符號 token 指程式的乙個基本組成單元,其作用相當於乙個句子中的單詞,是程式的乙個基本的資訊單元。組成符號的字串行就不相同,同一組字串行在某個上下文環境中屬於乙個符號,而在另乙個上下文環境中可能屬於完全不同的另乙個符號。編譯器中負責將程式分解為乙個乙個符號的部分,一般稱為 詞法分析器 c語言中,...