首頁 > 軟體

C語言 詳細講解接續符和跳脫符的使用

2022-04-19 19:02:44

一、接續符的意義

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

下面看一段接續符的程式碼(程式碼1-1):

#in
clud
e <st
dio.h>
in
t m
ain(
)
{
pri
ntf
    (
    "Hello AutumnZe.n"
    )
    ;  
ret
urn 0;
}

可以看到上述程式碼寫的很凌亂,但是可以正常編譯執行,如下:

二、接續符的使用

  • 編譯器會將反斜槓剔除,跟在反斜槓後面的字元自動接續到前一行
  • 在接續單詞時,反斜槓之後不能有空格,反斜槓的下一行之前也不能有空格
  • 接續符適合在定義宏程式碼塊時使用

所以說程式碼1-1可以寫成:

#include <stdio.h>
 
int main()
{
printf    (    "Hello AutumnZe.n"
    )    ;
    
return 0;
}

下面看一個接續符的應用程式:

#include<stdio.h>
 
#define SWAP(a,b)       
{                       
        int temp = a;   
        a = b;          
        b = temp;       
}
 
int main()
{
    int a = 1;
    int b = 2;
    int c = 3;
    
    SWAP(a,b);
    
    printf("a = %d, b = %dn", a, b);
    
    SWAP(b,c);
    
    printf("b = %d, c = %dn", b, c);
    
    return 0;
}

可以看到,通過接續符來進行宏定義,程式碼看起來非常優美。下面為輸出結果:

三、跳脫符的意義

C語言中的跳脫符()主要用於表示無回顯字元,也可用於表示常規字元

n回車換行
t橫向跳到下—製表位置
v豎向跳格
b退格
r回車
f走紙換頁
\反斜槓符""
'單引號符
a鳴鈴
ddd1~3位八進位制數所代表的字元
xhh1~2位十六進位制數所代表的字元

四、跳脫符的使用

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

如下:

下面看一段跳脫字元的使用範例:

#include <stdio.h>
 
int main()
{
    char enter = 'n';
    char* p = "141tx62";
    printf("%s", p);
    printf("%c", enter);
    return 0;
}

141 的十進位制表示為 97, 0x62 的十進位制表示為 98,所以列印出來的結果如下:

五、跳脫符和其他的語法混合

  • 獎項:Best of Show
  • 功能:處理三種檔案格式(PGM、PPM和ASCII Art)的降取樣工具,降低檔案解析度
  • 作者:Google 華裔工程師 Don Hsi-Yun Yang

下面是原始碼,看起來像一個小女孩的臉:

                                       /*
                                      +
                                     +
                                    +
                                    +
                                    [         >i>n[t
                                     */   #include<stdio.h>
                        /*2w0,1m2,]_<n+a m+o>r>i>=>(['0n1'0)1;
                     */int/**/main(int/**/n,char**m){FILE*p,*q;int        A,k,a,r,i/*
                   #uinndcelfu_dset<rsitcdti_oa.nhs>i/_*/;char*d="P%"   "dn%d40%d"/**/
                 "n%dn0wb+",b[1024],y[]="yuriyurarararayuruyuri*daijiken**akkari~n**"
          "/y*u*k/riin<ty(uyr)g,aur,arr[a1r2a82*y2*/u*r{uyu}riOcyurhiyua**rrar+*arayra*="
       "yuruyurwiyuriyurara'rariayuruyuriyuriyu>rarararayuruy9uriyu3riyurar_aBrMaPrOaWy^?"
      "*]/f]`;hvroai<dp/f*i*s/<ii(f)a{tpguat<cahfaurh(+uf)a;f}vivn+tf/g*`*w/jmaa+i`ni("/**
     */"i+k[>+b+i>++b++>l[rb";int/**/u;for(i=0;i<101;i++)y[i*2]^="~hktrvg~dmG*eoa+%squ#l2"
     ":(wn"1l))v?wM353{/Y;lgcGp`vedllwudvOK`cct~[|ju {stkjalor(stwvne"gt"yogYURUYURI"[
     i]^y[i*2+1]^4;/*!*/p=(n>1&&(m[1][0]-'-'||m[1][1]  !=''))?fopen(m[1],y+298):stdin;
      /*y/riynrt~(^w^)],]c+h+a+r+*+*[n>)+{>f+o<r<(-m]    =<2<5<64;}-]-(m+;yry[rm*])/[*
       */q=(n<3||!(m[2][0]-'-'||m[2][1]))?stdout /*]{     }[*/:fopen(m[2],d+14);if(!p||/*
       "]<<*-]>y++>u>>+r >+u+++y>--u---r>++i+++"  <)<      ;[>-m-.>a-.-i.++n.>[(w)*/!q/**/)
    return+printf("Can "  "notx20open40%s40"    ""       "for40%singn",m[!p?1:2],!p?/*
  o=82]5<<+(+3+1+&.(+  m  +-+1.)<)<|<|.6>4>-+(>    m-        &-1.9-2-)-|-|.28>-w-?-m.:>([28+
 */"read":"writ");for  (   a=k=u= 0;y[u];  u=2    +u){y[k++   ]=y[u];}if((a=fread(b,1,1024/*
,mY/R*Y"R*/,p/*U*/)/*          R*/ )>/*U{  */   2&& b/*Y*/[0]/*U*/=='P' &&4==/*"y*r/y)r}
*/sscanf(b,d,&k,& A,&           i,  &r)&&        !   (k-6&&k -5)&&r==255){u=A;if(n>3){/*
]&<1<6<?<m.-+1>3> +:+ .1>3+++     .   -m-)      -;.u+=++.1<0< <; f<o<r<(.;<([m(=)/8*/
u++;i++;}fprintf   (q,    d,k,           u      >>1,i>>1,r);u  = k-5?8:4;k=3;}else
  /*]>*/{(u)=/*{   p> >u  >t>-]s                >++(.yryr*/+(    n+14>17)?8/4:8*5/
     4;}for(r=i=0  ;  ;){u*=6;u+=                (n>3?1:0);if    (y[u]&01)fputc(/*
      <g-e<t.c>h.a r  -(-).)8+<1.                 >;+i.(<)<     <)+{+i.f>([180*/1*
      (r),q);if(y[u   ]&16)k=A;if                               (y[u]&2)k--;if(i/*
      ("^w^NAMORI; {   I*/==a/*"                               )*/){/**/i=a=(u)*11
       &255;if(1&&0>=     (a=                                 fread(b,1,1024,p))&&
        ")]i>(w)-;} {                                         /i-f-(-m--M1-0.)<{"
         [ 8]==59/* */                                       )break;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);
              /*] <*.na/m*o{ri{                       d;^w^;}  }^_^}}
               "   */   return  k-                -1+   /*'   '-`*/
                     (   -/*}/   */0x01        );       {;{    }}
                            ;           /*^w^*/        ;}

下面為輸出結果:

六、小結

C語言中的反斜槓 () 同時具有接續符和跳脫符的作用

  • 作為接續符使用時可直接出現在程式中
  • 作為跳脫符使用時需出現在單引號或雙引號之間

到此這篇關於C語言 詳細講解接續符和跳脫符的使用的文章就介紹到這了,更多相關C語言 接續符內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com