1. 程式人生 > >C陷阱與缺陷1

C陷阱與缺陷1

一.       詞法分析

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

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’。