C/C++的轉義字元詳解

C語言半兮發表於2018-07-27
所有的ASCII碼都可以用“\”加數字(一般是8進位制數字)來表示。而C中定義了一些字母前加"\"來表示常見的那些不能顯示的ASCII字元,如\0,\t,\n等,就稱為轉義字元,因為後面的字元,都不是它本來的ASCII字元意思了。
  轉義字元 意義 ASCII碼值(十進位制) 
  \a 響鈴(BEL) 007 
  \b 退格(BS) 008 
  \f 換頁(FF) 012 
  \n 換行(LF) 010 
  \r 回車(CR) 013 
  \t 水平製表(HT) 009 
  \v 垂直製表(VT) 011 
  \\ 反斜槓 092 
  \? 問號字元 063 
  \' 單引號字元 039 
  \" 雙引號字元 034 
  \0 空字元(NULL) 000 
  \ddd 任意字元 三位八進位制 
  \xhh 任意字元 二位十六進位制

C語言乾貨裙815393859

\a:蜂鳴,響鈴 
\b:回退:向後退一格 
\f:換頁 
\n:換行,游標到下行行首 
\r:回車,游標到本行行首 
\t:水平製表 
\v:垂直製表 
\\:反斜槓 
\':單引號 
\":雙引號 
\?:問號 
\ddd:三位八進位制 
\xhh:二位十六進位制 
\0:空字元(NULL),什麼都不做 
注: 
1,\v垂直製表和\f換頁符對螢幕沒有任何影響,但會影響印表機執行響應操作。 
2,\n其實應該叫回車換行。換行只是換一行,不改變游標的橫座標;回車只是回到行首,不改變游標的縱座標。 
3,\t 游標向前移動四格或八格,可以在編譯器裡設定 
4,\' 在字元裡(即單引號裡)使用。在字串裡(即雙引號裡)不需要,只要用 ' 即可。 
5,\? 其實不必要。只要用 ? 就可以了(在windows VC6 和tc2 中驗證)。 

我自己的C語言乾貨群:815393859

格式控制符參考: 

格式輸出字元:printf

使用:向終端輸出若干個型別任意的資料。

形式:printf (格式控制符,輸出列表)

說明:

格式控制符:% 格式說明引導符。

- 指定左對齊輸出。

0 指定空位填零。

m.n 指定輸出域寬度及精度。

l.h 輸出長度的修正。

格式字元 指定輸出的資料型別。

說明:

格式字元:指定輸出項的資料型別和輸出格式。

d 有符號十進位制整數。

o 無符號八進位制數。

x 無符號十六進位制數。(小寫的x格式中用小寫字母a,b,c,d,e,f來表示10到15之間的數,大寫的X則用大寫的ABCDEF來表示10到15之間的數)

u 不帶符號的十進位制整數。

基本整型:兩個位元組,十六個bit(位)

11 11 11 11 11 11 11 11 等於 65535.

11 11 11 11 11 11 11 10 等於 -2.

負數的第一位(符號位)為1。負數的補碼怎麼得到:原碼取反加一。2的二進位制數為:00 00 00 00 00 00 00 10,取反就等於11 11 11 11 11 11 11 01,然後加1,二進位制數逢二進一,所以就得出-2 的二進位制程式碼。

有符號的整型數可以用 %d 輸出。

無符號的整型數可以用 %u 輸出。

電腦裡存的數字都是二進位制數,最高位是符號位還是資料位,可以由輸出格式符來控制。

二進位制數轉換八進位制數:三個 1 對應一個 7 。

二進位制數鏨十六進位制數:四位二進位制對應一位十六進位制,四個1 對應一個 f。

說明:

格式字元:c 輸出一個字元。

s 輸出一個字串。

e 以指數形式輸出實型數。

f 以小數形式輸出實型數。

g 自動決定輸出格式為e和f中較短的一種,不列印無效的零。

% 輸出%。

注意:對於單精度數,使用 %f 格式符輸出時,僅前7位是有效數字,小數6位。

對於雙精度數,使用 %lf 格式符輸出時,前16位是有效數字,小數6位。

長度修正符

l:對整型指定長整型long

例:%ld , %lx , %lo , %lu

對實型指定雙精度double

例:%lf

h:只用於整型的格式字元修正為short

例:%hd , %hx , %ho , %hu

對64位整數的輸入輸出,在POJ上的C++環境下(即VC++),64位整數是: 
__int64 
輸入輸出格式為”%I64d”.

在G++環境下, 64位整數是 
long long 
輸入輸出格式為”%lld”.

域寬及精度的描述

M:域寬,即對應的輸出項在輸出裝置上所佔字元數

若:實際資料寬度>M,按實際資料寬度輸出。

實際資料寬度<M,左邊補空。

N:精度,說明輸出的實型數的小數位數。

幾點說明:

編譯程式只是檢查printf 函式的呼叫形式,不分析格式控制字串,如果格式字元與輸出項的型別不匹配,不進行型別轉換。(輸出的數為隨機)

格式字元要用小寫字母。

格式控制字串中可以包含轉義字元。

格式控制字串中的普通字元則原樣輸出。

輸出項的引數除了常數、變數外還可以是表示式、函式呼叫。

%g,%f和%e這三個格式用於列印浮點值。 
                  %g格式用於列印那些不需要按列對齊的浮點數特別有用。其作用有二: 
                  一,去掉該數尾多餘的零(沒有達到六位的數) 
                  二,保留六位有效數字(多餘六位的) 
                  %e格式用於列印浮點數時,一律顯示地使用指數形式:例如:輸出圓周率時是:3.141593e+00 
                 兩者的區別: 
                 %g格式列印出的數是總共6位有效數字 
                 %e格式列印出小數點後的6位有效數字 
                 %f禁止使用指數形式來表示浮點數。因此圓周率輸出為:3.141593 
                (但注意它的精度要求:也是小數點後6位有效數字) 
                (8)%%格式用於列印一個%字元。 
               (9)%E和%G只是在輸出時用大寫字母(E)代替了小寫字母(e)

                  輸出正負號的技巧,例如: 
                printf("%+d %+d %+d\n",-5,0,5); 
                只要在中間加個“+”號就行。作用是輸出符號位(即,數的正負號) 
                如果不希望正數的前面出現‘+’號,可用下面的方法 
                只要在中間加個“ ”號(即:空格)就行。例如: 
                作用:如果一個數是非負數,就在它的前面插入一個空格。 
                int i; 
                for(i=-3;i<=3;i++) 
                        printf("% d\n",i); //注意%和d之間有一個空格

                sscanf()的使用技巧: 
                分解字串,很多功能都需要正規表示式的知識,所以就介紹一下最簡單的幾種用sscanf來分解字串 的用法。 
                1. 
                char str[100],str1[100],str2[100]; 
                gets(str); 
                sscanf(str,”%s%s”,str1,str2); 
                將讀入的一整行字串按空格,製表符或回車符分割成兩個字串。 
                2 
                取指定長度的字串。如在下例中,取最大長度為4位元組的字串。 
         sscanf("123456 ", "%4s", str);

相關文章