字面值常量(literal constant),「字面值」是指只能用它的值稱呼它,「常量」是指其值不能修改。每個字面值都有相應的型別,3.14是double型,2是int型。只有內建型別存在字面值。
1.整形字面值規則
整形字面值常量可以用十進位制、八進位制、十六進製制表示。
20 // dec
024 // oct(以0開頭)
0x14 // hex(以0x或0x開頭)
整形字面值常量的型別預設為int或long,其值適合int就是int型別,比int大就是long型別。在數值後加l或l(小寫字母l容易與數字1混淆,建議用l)可以指定為long,加u或u指定為unsigned型別,加ul或lu定義為unsigned long型別。沒有short型別的字面值常量。
2.浮點字面值規則
可以用十進位制或科學計數法(指數用e或e)表示,預設為double,在數值後加f或f表示單精度,加l或l表示擴充套件精度。
3.14159f .001f 12.345l 0.
3.14159e0f 1e-3f 1.2345e1l 0e0
3.布林字面值和字元字面值
布林字面值:true、false。字元字面值由單引號定義:』2』(char型別)、l』a』(wchar_t型別)。
4.非列印字元和轉義序列
非列印字元和特殊字元(如單引號、雙引號、反斜槓)都要寫為轉義字元(以反斜槓開頭)。
無論是普通字元,還是非列印字元和特殊字元,都可以表示為「通用轉義字元」。如八進位制形式的「\7(響鈴符)、\12(換行符)、\0(空字元)、\62(數字2)」(可以對照ascii碼表看一下)。「通用轉義字元」也可以用十六進製制表示(\xddd)。
5.字串字面值
需要用雙引號括起來,非列印字元寫要轉義,編譯器會自動在末尾新增乙個空字元。
「hello c++」 //6.字串字面值的連線兩個相鄰的,僅由空格、製表符、換行符分隔的字串字面值,將連線在一起。****** string literal
「」 //
empty string literal
「\n hello \t c++」 //
string literal using newlines and tabs
l」hello c++」 //
a wide string literal
std::cout << 「a multi-line 「 「string輸出:a multi-line string literal using concatenation「std::cout << 「multi-line」 l」literal 「 << std::endl;」,該語句結果未定義,可能執行也可能崩潰。literal 「
「using
concatenation」
<< std::endl
7多行字面值
可以使用反斜槓,將多行內容當作同一行處理。
// multiline string literal
std::cout << 「a multi-line \
string literal \
using a backslash」
<< std::endl;
反斜槓必須是行尾字元,後面不能有注釋或空格。後繼行行首的任何空格和製表符都是字串字面值的一部分。
【學習資料】 《c++ primer》
C 字面值常量
乙個形如42的值被稱為字面值常量 literal 每個字面值常量都對應一種資料型別,字面值常量的形式和值決定了它的資料型別。字面值常量的型別有 1 整型字面值 整型字面值可以寫作三種形式 十進位制數 八進位制數和十六進製制數。以0開頭的整數代表八進位制數,以0x或0x開頭的代表十六進製制數。如下為數...
字面值常量
乙個形如 39 的值被稱作字面值常量 literal 每個字面值常量都對應一種資料型別,字面值常量的形式和值決定了它的資料型別。整型字面值寫作十進位制數 八進位制數或十六進製制數的形式。以0開頭的整數代表八進位制數,以0x或0x開頭的代表十六進製制數。下面的任意一種形式都表示數值 20 20 十進位...
C 中字面值常量和字面值型別
乙個形如42的值被稱為字面值常量。字面值常量的形式和值決定了常量的型別。例如0x42是16進製表示的整型常量。a 是char型字面值。字面值常量顧名思義由字面意思表示,是常量。字面值常量在程式中是直接表示的,整型直接寫出大小,字元直接寫出字元。乙個字面值常量在編譯時被直接解析為立即數,編譯器內部維護...