C語言高階剖析 13 接續符和轉義符

2021-09-29 06:20:59 字數 3017 閱讀 4112

c 語言中的接續符(\)是指示編譯器行為的利器

下面通過乙個例子感受一下接續符

#in\

clud\

ein\

t m\

ain(\

)

上面的**是合法的**嗎?我們編譯一下看看

其實上面的**就是列印一行 helo world! 只不過將**使用接續符變成了多行。

有了上面對接續符的直觀感覺,下面了解一下接續符的使用。

通過乙個例子來說明接續符的使用

#include

// #define swap(a, b)

#define swap(a, b) \

intmain()

上面的程式中,第 3 行定義乙個巨集,作用是交換兩數的值,與 4-9 行的程式相比,4-9 行使用的接續符,使得**的可讀性增加了。

鍵盤上的按鍵分為兩種,第一種是可以在螢幕上列印出來的這種,比如 a, b, c 等等,第二種是按下之後不能在鍵盤上列印出來的,比如回車鍵,tab 鍵,這類符號該如何表示呢,這就需要轉義字元了。

c 語言中的轉義符(\)主要用於表示無回顯字元,也可用於表示常規字元

轉義字元

意義\n

回車換行

\ttab鍵(橫向跳到下一製表位置)

\v豎向跳格

\b退格(bs) ,將當前位置移到前一列

\r回車,將當前位置移到本行開頭

\f換頁(ff),將當前位置移到下頁開頭

\\反斜槓符「\」

\』單引號符

\a鳴鈴(bel)

\ddd

1~3位八進位製所代表的字元

\xhh

1~2位十六進製制數所代表的字元

當反斜槓(\)作為轉義符使用時必須出現在單引號或者雙引號之間

下面通過乙個例子來說明轉義符的使用:

#include

intmain()

\141 表示八進位制數 141 表示的字元,換成10進製數為97,對應的字元為 a;

\t 等於tab鍵,表示橫向跳到下一製表位置;

\x62 表示十六進製制數 62 所代表的字元,換成十進位制為 98,對應的字元為 b。

c 語言中的反斜槓(\)同時具有接續符和轉義字元的作用,作為接續符使用可直接出現在程式中,作為轉義符使用時需出現在單引號或雙引號之間。

最後我們來欣賞一下google 華裔工程師 don hsi-yun yang 用 c 語言寫的**,該段**獲得 best of show 大獎

作用:處理三種檔案格式(pgm、ppm 和 ascii art)的降取樣工具,降低解析度。

/*++

++

[ >i>n[t

*/#include

/*2w0,1m2,]_r>i>=>(['0n1'0)1;

*/int/**/

main

(int

/**/n,

char

**m)

[*/:

fopen

(m[2

],d+14)

;if(!p||

/* "]u>>+r >+u+++y>--u---r>++i+++" -m-.>a-.-i.++n.>[(w)*/

!q/**/

)return

+printf

("can "

"not\x20open\40%s\40"

"""for\40%sing\n"

,m[!p?1:

2],!p?

/* o=82]5<4>-+(> m- &-1.9-2-)-|-|.28>-w-?-m.:>([28+

*/"read"

:"writ");

for( a=k=u=

0;y[u]

; u=

2+u)if(

(a=fread

(b,1

,1024

/*,my/r*y"r*/

,p/*u*/

)/* r*/

)>

/*u*/

sscanf

(b,d,

&k,& a,

& i,

&r)&&

!(k-

6&&k -5)

&&r==

255)

fprintf (q, d,k, u >>

1,i>>

1,r)

;u = k-5?

8:4;k=3;

}else

/*]>*/

for(r=i=0;

;)r=b[i++

];u+=(

/**>> *..+8

&*(y+u))?

(10- r?4:

2):(y[u]&4

)?(k?2:4

):2;u=y[u/*

49;7i\(w)/;} y}ru\=*ri[ ,mc]o;n}trientuu ren (

*/]-

(int

)'`';}

fclose

( p)

;k=+

fclose

( q)

;/*]

" */

return k--1

+/*\' '-`*/(-

/*}/ */

0x01);

};/*^w^*/

;}

原始**遠遠看上去是乙個小女孩,執行結果還是乙個小女孩,只不過變小了,降低了解析度。

C語言高階 13 接續符和轉義符

c語言中的接續符 是指示編譯器行為的利器。編譯器會在反斜槓 剔除,跟在反斜槓後面的字元自動接續到前一行 在連線單詞時,反斜槓之後不能有空格,反斜槓的下一行之前也不能有空格 會報錯 backslash and newline separated by space warning 在接續符後多加了乙個空...

接續付和轉義符

以反斜槓 表示斷行。編譯器會將反斜槓剔除掉,跟在反斜槓後面的字元自動接續到前一行。例 這是一條合法的 單行注釋 這是一條合法的單行注釋 這是一條合法的單行注釋 這是一條合法的單行注釋 def ine mac ro 這是一條合法的 define macro 這是一條合法的單行注釋 巨集定義cha r ...

2 2 接續符和轉義符

1 c語言中的接續符 是指示編譯器行為的利器 2 接續符的使用 1 編譯器會將反斜槓剔除,跟在反斜槓後面的字元自動解到前一行 2 在連線單詞時,反斜槓之後不能有空格,反斜槓的下一行之前也不能有空格 3 接續符適合在定義巨集 塊時使用 define swap a,b 3 c語言中的轉義符 主要用於表示...