C語言陷阱與缺陷 第一章學習

2021-07-25 03:24:51 字數 1046 閱讀 3751

編譯器中負責將程式分解的乙個乙個的符號的部分,一般都為「詞法分析器」。

例子:if(x>big) big = x;

這個我們自己理解起來也很好理解,就是如果x>big的時候把x的資料賦值給big,這個很簡單的東西在一些演算法中會用到,比如快速查詢演算法當中。

#include#includeint main()

與a - --b是效果不一樣的。由此我們可以看出剛才的編輯器的規則的一般引用情況。

列子2y = x/*p;

在這裡我們按照剛才的貪心規則,發現/*很有可能出現一組字串,就是注釋於是我們在vs上測試

#include#includeint main()

我們發現和我們想象的一模一樣,他把/*當成了乙個整體,這個不是我們想要的。

改進:讓我們想要的東西連城乙個字串y = x/(*p);這樣我們就能正常的使用。

整形常量的三種形式:10進製,8進製,十六進製制

書上說八進位制有可能會出現乙個問題c編輯器會把8和9也作為8進製。

首先我們知道8進製是以0開頭,我們在編輯器裡面去寫下

int a = 0915;

我們發現vs根本編譯都不讓你通過,可能是以前的編輯器有可能出現這個問題,於是我用mac gcc也去做了一下也是不能通過,所以基本上可以說現在這種編輯器的話應該不會出現這種錯誤。

這個是只有c和c++才有的特殊啊,至少我接觸的過的語言一般都只有字串,沒有字元。

出錯原因:

'』和""沒有理解,單引號是字元,雙引號是字串。

例子:char ch = "a"; char *p = 'a';

本質:字串是一組字元+"\0"聯合起來組成的,在記憶體中連續儲存字元。

a+++++b;它的含義

如果直接拿到編輯器裡面執行它會報錯。

但是分析一下它的運算法則

1.a2.a+

3.a++

4.a++ +

5.a++ + +

6.a++ + ++

7.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語言中,...