今天比較懶惰,沒做題,只是看了一點那本c陷阱與缺陷,說實話讀了不多但明顯能感覺出這是一本好書,感覺對我來說剛好,不是基礎書,但也基本能看懂,而且能學到好多東西,但今天只看了三章,主要是下軍旗了,囧,我也只能把我學到的總結下來,學了總比一點都沒學要好,我也只能這樣安慰自己了。
首先就是乙個很基本的問題,但我以前不知道的,就是c語言編譯器如何進行詞法分析,就比如說下面這個表示式a---b,當編譯器拿到這個表示式時,它會怎麼分析呢?現在我知道了,c語言的編譯器遵循「貪心法」,所謂的貪心法就是編譯器從左到右乙個乙個字元讀入,如果該字元能組成乙個符號,那就再讀入下乙個字元,判斷已經讀入的字串是否可能是乙個符號的組成部分,如果是那就再讀入乙個字元,接著判斷這3個字元組成的字串是否可能是乙個符號的組成部分,如果是,那就接著讀,直到所讀入的字串不可能組成乙個符號,所以對於上述的表示式,正確的理解是(a--)-b,還有相關的一點是符號間可以有空格,但乙個符號內有空格和沒空格是有區別的,還是拿上述表示式說,(1)a-- -b(2)a- --b,這兩個是不同的,第乙個和原始的是同乙個意思。還有乙個典型的例子就是y=x/*p,本意p是乙個指向整數的指標,想把x除以p所指向的數賦給y,但事實上/*會被編譯器解釋為注釋的一部分。
第二就是書裡對c語言單引號和雙引號區別的闡述,c語言用單引號引起的乙個字元實際上代表乙個整數,整數值對應於該字元在編譯器採用的字符集中的序列值。一般編譯器採用的是ascii字符集。用雙引號引起的字串代表的是指向乙個無名陣列起始字元的指標,該陣列被雙引號之間的字元和乙個額外的二進位制值為零的字元'/0'初始化。
第三點就是來看一下這個表示式(*(void(*)( ) )0)( ),第一眼看確實比較暈,但經過他的解釋後我懂了,首先是(void(*)( )),這總體是個強制型別轉化,括號裡面的是個函式指標,也就是說把0這個位址轉化為乙個函式指標,然後執行這個位址上的函式。這裡還有個函式宣告,看的不太懂,留作以後的乙個問題吧void(*signal( int ,void(*)( int ) ))( int );
最後乙個就是switch無break的妙用,有下面乙個例子,就是編譯器在查詢符號時要跳過程式中的空格,製表和換行符,編譯器對三者的處理是相同的,除了遇到換行符時程式的**計數器要遞增
case '/n':
linecount++;
/*這裡沒有break*/
case '/t':
case ' ':
...處理語句
學習心得體會1
首先我定義了乙個類 sealed class usermodel set public string username set public usermodel string name,int32 age public void displaymember userage this.username...
PHP PDO 心得體會
關於pdo 我想可以不用做過多的描述,寫一寫最近的使用心得體會 首先 關於如何使用pdo 連線到資料庫 dbms mysql 使用的資料庫 host localhost 選擇的主機 dbname test 選擇的資料庫 user root 登陸的使用者名稱 password 使用者密碼 dsn dm...
銷售心得體會
銷售思維的培養 1.裝可憐讓客戶動惻隱之心是一種方法但是不適合男人 2.身處高位的銷售領導往往擁有給客戶的折扣和動用資源的優勢,不要當綠葉,要按兵不動尋找時機 3.市場上的大客戶與哪家合作就會成為標桿事件,哪家公司就會成為一線公司。4.站在客戶的角度,在業務上給予中肯的意見,得到客戶的感謝和認可。5...