c 字面值常量

2021-09-06 07:55:48 字數 2154 閱讀 5071

字面值常量(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++」       //

****** string literal

「」 //

empty string literal

「\n hello \t c++」 //

string literal using newlines and tabs

l」hello c++」 //

a wide string literal

6.字串字面值的連線兩個相鄰的,僅由空格、製表符、換行符分隔的字串字面值,將連線在一起。

std::cout << 「a multi-line 「 「string

literal 「

「using

concatenation」

<< std::endl

輸出:a multi-line string literal using concatenation「std::cout << 「multi-line」 l」literal 「 << 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型字面值。字面值常量顧名思義由字面意思表示,是常量。字面值常量在程式中是直接表示的,整型直接寫出大小,字元直接寫出字元。乙個字面值常量在編譯時被直接解析為立即數,編譯器內部維護...