C核心技術手冊(二十二)

2021-08-31 04:52:19 字數 2662 閱讀 9203

字元常量由乙個單引號中包含乙個或多個字元組成。一些例子如下:

『a』 『xy』 『0』 『*』

所有源字符集中的字元均可用於字元常量中,除去單引號(『),

反斜槓(/),

及換行符,可以使用轉義字元來表示這些字元:

『/』』 『//』 『/n』

在字元常量中所有需要轉義的字元將在」

轉義字元」

一節描述。

3.3.1

字元常量的型別

字元常量具有int

型別,除非它們被明確地使用字首l

定義為寬字元(wchart_t),

如果乙個字元常量僅含有占有乙個位元組的字元,它的值將是執行時字符集中的字元碼。例如,常量a

在ascii

編碼中的十進位制值為97,

含有多個字元的字元常量其值因編譯器的不同而各異。

下面的**段測試輸入的值是否在1

和5之間(包括1

和5):

#include 

int c = 0;

/* ... */

c = getchar( ); // read a character.

if ( c != eof && c > '0' && c < '6' ) // compare input to character

// constants.

如果char型別是有符號的,那麼字元常量的值也可能為負數,因為常量的值是char向int型別轉換的結果。例如,iso 8859-1,或稱ansi字符集,通常使用8-bit字符集,在它中,英磅的表示字元£,

其十六進製制值為a3:

int c = '/xa3'; // symbol for pounds sterling

printf("character: %c code: %d/n", c, c);

如果執行時字符集為iso 8859-1,且型別char是有符號的,那麼上面例子中的printf語句將產生如下輸出:

character: £ code: -93

在乙個不使用單位元組字元的程式中,你可以使用寬字元常量,寬字元常量具有型別wchar_t,使用字首l,如下面這些例子:

l'a' l'12' l'/012' l'/u03b2'

包含單個多位元組字元的寬字元常量的值為標準函式mbtowc()

的返回值。

3.3.2

轉義字元

轉義字元以反斜槓/

開始,表示乙個單字元,轉義字元允許你表示任意字元常量和字串常量,包括不可列印字元和具有特殊意義的字元,例如』

和」,

table 3-3

列出了c

中公認的轉義字元。

table 3-3. escape sequences

轉義字元

字元值輸出裝置上的動作 /』

單引號(』)

可列印字元

/』』雙引號(」) /?

問號(?) //

反斜槓(/) /a

警報 產生乙個聽得見或可見的訊號 /b

退格 從當前位置向前移動乙個字元 /f

換頁 從當前位置移動到下乙個新頁的開始 /n

換行 從當前位置移動到下乙個新行的開始 /r

回車 從當前位置移動到當前行的開始 /t

水平tab

從當前位置移動乙個水平tab鍵

/v垂直tab

從當前位置移動乙個垂直tab鍵

/o,/oo,

或/ooo

八進位制字元

可列印字元

/xh[h…]

十六進製制字元

/uhhhh

/uhhhhhhhh

通用字元名

如表table 3.3

所示,通用字元名也可使用轉義字元,通用字元允許指定擴充套件字符集中任意的字元,而不管使用的是何種編碼方式。

你可使用八進位制或十六進製制轉義字元來表示在型別unsigned char

的取值範圍內的任意字元碼,或者在型別wchar_t

取值範圍內的任意寬字元碼。如table 3-4.

table 3-4. examples of octal and hexadecimal escape sequences

八進位制

十六進製制 描述

『/0』

『/x0』

null

『/033』 『/33』

『/x1b』

esc『/376』

『/xfe』

254『/417』

『/x10f』

非法,其值超過unsigned char

的取值範圍

l』/417』

l』/x10f』

寬字元常量,型別為wchar_t -

l』/xf82』

寬字元常量

表中沒有最後乙個常量l』/xf82』

對應的八進位制表示,因為八進位制轉義字元不能容納三個八進位制數字,同樣,寬字元常量l』/3702』

包含兩個字元,分別為l』370』

和l』2』

C核心技術手冊(二十)

在c 中,常量是表示乙個固定值的記號,它可能是整型 浮點型 字元 或乙個串。乙個常量的型別由它的值和記法來決定。這裡討論的常與混合常量不同,混合常量在c99 標準中介紹,它通常是可修改的物件,類似於變數,了解混合常量的詳細介紹和特殊操作可參見第五章。乙個整型常量可以以普通的十進位制數表示,或者是八進...

C核心技術手冊(十二)

1.7.2 符號 符號可以為任意乙個關鍵字 識別符號 常量 字串 標點符號 函式 操作符 兩字母詞等符合語法規則的表示式,如下c 語句報含5 個符號 printf hello,world.n 單獨的符號為 printf hello,world.n 符號被預編譯器在翻譯的第三階段解釋,與第七階段編譯器...

C核心技術手冊(二十四)

在 c中,不同型別的操作可以化合成乙個操作,例如,下面的表述式 double dvar 2.5 define dvar as a variable of type double.dvar 3 multiply dvar by an integer constant.if dvar 10l compa...