C陷阱與缺陷1

2021-08-28 19:17:11 字數 726 閱讀 6389

一.       詞法分析

(將程式分解成符號的過程)

p.s:程式中的單個字元孤立起來沒有任何意義,只要結合上下文才有意義。

1.=不同於==

=:賦值運算子

==:關係運算子

注意:不要把賦值運算子用成了關係運算子;也不要把關係運算子用成了賦值運算子(當確實需要對變數賦值並檢查該變數的新值是否為0時,最好的處理方法是—顯式地進行比較,如if((x=y)!=0)或將常量放在關係運算子的左側)。

2.&和|不同於&&和||

&和|表示按位與或非的運算,操作結果為任意數值。

&&和||表示邏輯操作,操作結果只能為0或1;且當左側的表示式能決定結果時,就不再進行右側表示式的計算(短路運算的性質)。

3.詞法分析中的「貪心法」

每乙個符號應該包含盡可能多的字元

如:a---b,應翻譯為(a--)-b, y=x/*p應翻譯為y=x/(*p)

4.整型常量

若乙個整型常量(或字元常量)的第乙個字元是0,則該常量將被視為八進位制。

如:char c=040,printf(「%d\n」, c),則輸出結果為32.

5.字元與字串

字元:單引號引起的,實際代表乙個整數(ascii碼);

字串:雙引號引起的,代表乙個指向無名陣列起始字元的指標,該陣列的初始化值為雙引號之間的字元及乙個額外的二進位制值為零的字元』\0』。

C陷阱與缺陷三 1

理解陣列與指標的概念 includeint main 指標在32位機器上佔4位元組。雖然我們可以用 a 給陣列元素賦值,但是a不是指向首位址的指標,其實只是乙個引用。int cal 12 13 該陣列擁有12個陣列型別的元素,每個元素都是擁有13個整型數。includeint main sizeof...

C陷阱與缺陷 筆記 1

第一章 詞法分析 1.1關於 和 的區別 主要問題在於這兩個運算子在if的條件語句中出現時的問題。解決 如果if的條件中需要 賦值語句,則顯式表達該語句的意思。比如判斷賦值後的值是否為0,可以if variable function 0 1.2 和 和 基本就是錯寫的問題。含義不同。1.3 詞法分析...

c陷阱與缺陷 陷阱

例1 if x y break 這就話的意思就是把y賦值x,判斷x是否為0,實則是在判斷y是否為0 例2 while c c t c n 這句話的意思就是 c t c n 賦值給c,而有 符本身就是不為0的數,所以這就是while 1 的意思。例3 int x 4,p new int p 2 cou...