天天看點

C語言深度解剖(第二章-符号讀書筆記)

2.1 注釋符号

c語言注釋有兩種:/…/和//,

其中:/…/編譯器剔除注釋代碼時會将/…/變為空格。

特别注意:/…/這種注釋不能嵌套,/總是與離它最近的/比對

2.2 連續符和轉義符

C語言裡以反斜杠\表示斷行。編譯器會将反斜杠剔除掉,跟在反斜杠後面的字元自動接續到前一行。但是注意:反斜杠之後不能有空格,反斜杠的下一行之前也不能有空格。當然你可以測試一下加了空格之後的效果。有時候bug出現在這裡,你很難找到。

反斜杠除了可以被用作接續符,還能被用作轉義字元的開始标志。

常用的轉義字元及其含義:
轉義字元      轉義字元的意義
\n              回車換行
\t             橫向跳到下一制表位置
\v             豎向跳格
\b              倒退
\r              回車
\f             走紙換頁

\\反斜扛符"\"

\'  單引号符
\a  鳴鈴  
\ddd    1~3 位八進制數所代表的字元
\xhh    1~2 位十六進制數所代表的字元

廣義地講,C語言字元集中的任何一個字元均可用轉義字元來表示。
表中的\ddd 和\xhh正是為此而提出的。ddd 和 hh 分别為八進制
和十六進制的 ASCII 代碼。
如\102 表示字母"B", \134 表示反斜線,\X0A 表示換行等
           

2.5.1 左移和右移

左移運算符“<<”是雙目運算符。其功能把“<< ”左邊的運算數的各二進位全部左移若幹位,由“<<”右邊的數指定移動的位數,高位丢棄,低位補 0。

右移運算符“>>”是雙目運算符。其功能是把“>> ”左邊的運算數的各二進位全部右移若幹位,“>>”右邊的數指定移動的位數。但注意:對于有符号數,在右移時,符号位将随同移動。當為正數時, 最高位補 0;而為負數時,符号位為 1,最高位是補 0 或是補 1 取決于編譯系統的規定。Turbo C 和很多系統規定為補 1。

注意的問題:

0x01<<2+30;或 0x01<<2-3;

這樣的代碼時錯誤的。一個整型數長度為 32 位,左移32位發生了什麼事情,溢出
!左移-1位呢,是以左移和右移的位數是有講究的。左移和右移的位數不能大于
資料的長度,不能小于 0。
           

繼續閱讀