1. 程式人生 > >C語言學習筆記---《C陷阱和缺陷》字元和字串

C語言學習筆記---《C陷阱和缺陷》字元和字串

C語言中的單引號和雙引號含義迥異,在某些情況下如果把二者弄混,編譯器並不會檢測報錯,從而在執行時產生難以預料的結果。

用單引號引起來的一個字元實際上代表一個整數,整數值對應於該字元在編譯器採用的字符集中的序列值。因此對於採用ASCII字符集的編譯器而言,'a'的含義與0141(八進位制)或者97(十進位制)嚴格一致。

用雙引號引起的字串,代表的卻是一個指向無名陣列起始字元的指標,該指標陣列被雙引號之間的字元以及一個額外的二進位制為0的字元'/0'初始化。

下面的這兩個語句是等效的:

printf("Hello world\n");

char hello[]={'H' , 'e' , 'l' , 'l' , 'o' ,' ' , 'w' , 'o' , 'r' , 'l' , 'd' , '/n' , 0 ,};

printf(hello);