c++ 字面值常量


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM