C陷阱與缺陷,小記
Chapter 1
1、符號間的空白(空格符,製表符,換行符)將被忽略。
例:
if(x>big) big=x;還可以寫成:
if
(
x
>
big
)
big
=
x
;
2、詞彙分析中的“貪心法”
編譯器將程序分解成符號的方法是,從左到右一個字符一個字符的讀入,如果字符可能組成一個字符,那麼再讀入下一個字符,以此類推。但是符號之間不能前有空白
例1:
a---b和 a -- - b含義相同,但是和a - --b含義不同。
例2:
y=x/*p /*p指向除數*/;
這個例子表明y=x 之後的都是註釋,可以更改如下:
y=x/ *p /*p指向除數*/; 這樣僅在之間加了一個空格,破壞了貪心法的讀取法則、或者更清楚的表達方式,y=x/(*p)