再談常數

常數整數一律被當做 int 型態的資料。哪怕是很小的整數, 例如 1 可以被一個 byte 表示,但還是用了四個 bytes。 如果要設定使它成為 unsigned int 型態的資料,要寫 1U 或 256U。 如果要設定使它成為 long 型態的資料,要寫 1L 或 256L。 如果要設定使它成為 unsigned long 型態的資料,要寫 1UL 或 256UL。 以上的 U 和 L 也都可以用小寫字母。

只要常數中有一個小數點,就被認為是浮點數,一律被當做 double 型態的資料。 例如 1. 或 2.56,都是以八個 bytes 表達。 如果要設定使它成為 float 型態的資料,要寫 1.F 或 2.56F。 如果要設定使它成為 long double 型態的資料,要寫 1.L 或 2.56L。 浮點常數的另一種表達方式是指數表達, 例如 1E-2 和 2.56E2,分別等於 0.01 和 256.0。 以上的 F、L 和 E 都可以用小寫字母。

以 0 開頭的整數常數,以八進制數字解讀。 例如 037 == 31 是真。 以 0x 或 0X 開頭的字,被當做是一個十六進制的數字 (0x 和 0X 不含在內), 其中的字母部分可以是大寫或小寫。 例如 0x1f == 31 && 0x1F == 31 是真。 它們也都被當做 int 型態的資料, 在常數後面添加 U 或 L 或 UL,可以改變型態。

'x' 是 x 字符的機器內碼。 通常就是 ASCII 碼,但是要小心其他種類內碼的可能性。 例如 '0' 是 48 或 060 或 0x30。 在一對單引號 ' 裡面只能放一個字符, 或是一個跳脫字串 (escape sequence)。 以下是所有的跳脫字串。

'\ooo'
第一個 o 是 {0,1,2} 之一,後面兩個 o 是 {0,1,2,3,4,5,6,7} 之一,以八進制數字代表一個內碼。 以 ASCII 碼為例,'0' == '\060' 是真。
'\xhh'
兩個 h 各是一個十六進制數字,以十六進制數字代表一個內碼。 以 ASCII 碼為例,'0' == '\x30' 是真。
'\n'
newline,代表 LF 的內碼。 以 ASCII 碼為例,'\n'=='\012' && '\n'=='\x0A' 是真。 以下是所有 '\n' 類型的跳脫字串。
\aBEL (alert bell) \vVT (vertical tab)
\bBS (backsapce)\\\ (back slash)
\fFF (formfeed)\?? (question mark)
\nLF (linefeed)\'' (single quote)
\rCR (carriage return)\"" (double quote)
\tHT (horizontal tab)

'\0''\000''\x00' 都代表 0 號字元, 也就是 NUL 字元。它的數值就是 0 但是經常寫成 '\0' 以強調它是一個字元。

習題

[ 前一節 ]‧[ 後一節 ]‧[ 回目錄 ]



注意:此處所有文件均為原著,個別的版權宣告日後會一一公布, 整體版面設計亦尚未完成。但仍請勿抄襲文字與圖片,以免觸犯著作權法。

Created: Apr 21, 2000
Last Revised: May 14, 2000
© Copyright 2000 Wei-Chang Shann 單維彰

shann@math.ncu.edu.tw