再談常數

常數整數一律被當做 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