最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C/C++之字面量詳解(代碼中的固定值,用于表示各種數(shù)據(jù)類型的常量)

 更新時(shí)間:2025年09月18日 16:51:01   作者:MzKyle  
C++字面量是直接表示常量的固定值,涵蓋整型、浮點(diǎn)、字符、字符串、布爾、指針等類型,支持多進(jìn)制、后綴及轉(zhuǎn)義,用戶定義字面量(C++11+)提供自定義解析方式,類型推導(dǎo)自動(dòng)確定類型以避免隱式轉(zhuǎn)換和溢出問題

在C++中,字面量(Literal) 是直接出現(xiàn)在代碼中的固定值,用于表示各種數(shù)據(jù)類型的常量。它們可以是數(shù)字、字符、字符串、布爾值或特殊類型的值。

1. 整型字面量(Integer Literals)

用于表示整數(shù),支持多種進(jìn)制和類型后綴:

進(jìn)制表示

  • 十進(jìn)制:普通數(shù)字(無前綴),如 42100。
  • 八進(jìn)制:以 0 開頭,如 012 表示十進(jìn)制的 10。
  • 十六進(jìn)制:以 0x0X 開頭,如 0xFF 表示十進(jìn)制的 255。
  • 二進(jìn)制(C++14+):以 0b0B 開頭,如 0b1010 表示十進(jìn)制的 10。

類型后綴

  • uUunsigned 類型,如 42U。
  • lLlong 類型,如 100L
  • llLLlong long 類型,如 9999999999LL。
  • ulULunsigned long 類型,如 1000000UL。

示例

int decimal = 42;       // 十進(jìn)制
int octal = 012;        // 八進(jìn)制,等于十進(jìn)制10
int hex = 0xFF;         // 十六進(jìn)制,等于十進(jìn)制255
int binary = 0b1010;    // 二進(jìn)制,等于十進(jìn)制10
unsigned long large = 1234567890UL;  // unsigned long類型

2. 浮點(diǎn)型字面量(Floating-Point Literals)

用于表示小數(shù),支持兩種表示方式和類型后綴:

表示方式

  • 小數(shù)形式:如 3.14、0.5.25(等價(jià)于 0.25)。
  • 指數(shù)形式:使用 eE 表示科學(xué)計(jì)數(shù)法,如 1.23e5 表示 1.23×10?(即 123000)。

類型后綴

  • fFfloat 類型,如 3.14F。
  • lLlong double 類型,如 3.14L。

示例

double pi = 3.14;       // double類型
float pi_f = 3.14F;     // float類型
long double big = 1.23e100L;  // long double類型

3. 字符字面量(Character Literals)

用于表示單個(gè)字符,用單引號(hào) ' 包圍:

  • 普通字符:如 'a'、'0''$'。
  • 轉(zhuǎn)義字符:以反斜杠 \ 開頭,如 '\n'(換行符)、'\t'(制表符)、'\''(單引號(hào))。

Unicode字符(C++11+):

  • u8'x':UTF-8編碼,類型為 char。
  • u'x':UTF-16編碼,類型為 char16_t。
  • U'x':UTF-32編碼,類型為 char32_t
  • L'x':寬字符,類型為 wchar_t。

示例

char c = 'A';           // 普通字符
char newline = '\n';    // 換行符
char16_t euro = u'€';   // UTF-16編碼的歐元符號(hào)

4. 字符串字面量(String Literals)

用于表示文本,用雙引號(hào) " 包圍:

  • 普通字符串:如 "Hello"、"123"。
  • 轉(zhuǎn)義字符:與字符字面量相同,如 "Hello\nWorld"
  • 原始字符串(C++11+):用 R"(...)" 表示,無需轉(zhuǎn)義特殊字符,如 R"(C:\path\to\file)"

Unicode字符串

  • u8"text":UTF-8編碼,類型為 const char*。
  • u"text":UTF-16編碼,類型為 const char16_t*。
  • U"text":UTF-32編碼,類型為 const char32_t*。
  • L"text":寬字符,類型為 const wchar_t*。

示例

const char* str = "Hello";           // 普通字符串
const char* path = R"(C:\Users\Doc)"; // 原始字符串
const char16_t* utf16 = u"你好";      // UTF-16編碼的字符串

5. 布爾字面量(Boolean Literals)

表示邏輯值,只有兩個(gè):

  • true:真。
  • false:假。

示例

bool isReady = true;
bool isValid = false;

6. 指針字面量(Pointer Literals)

表示空指針:

  • nullptr(C++11+):類型安全的空指針常量,類型為 std::nullptr_t。
  • NULL:傳統(tǒng)的空指針宏,通常定義為 0(void*)0。

示例

int* ptr = nullptr;  // C++11及以后推薦使用nullptr

7. 用戶定義字面量(User-Defined Literals, C++11+)

允許自定義字面量的解析方式,通過重載后綴運(yùn)算符實(shí)現(xiàn)。標(biāo)準(zhǔn)庫中也有一些預(yù)定義的UDL,例如:

  • 時(shí)間單位1h(1小時(shí))、30min(30分鐘)、45s(45秒)。
  • 字符串轉(zhuǎn)換"hello"s 表示 std::string 類型(需包含 <string>)。

示例

#include <iostream>
#include <string>

using namespace std::literals;

int main() {
    auto str = "hello"s;  // std::string類型
    auto duration = 2h + 30min;  // std::chrono::duration類型
    std::cout << str.length() << std::endl;
    return 0;
}

8. 字面量的類型推導(dǎo)

編譯器會(huì)根據(jù)字面量的形式和后綴自動(dòng)推導(dǎo)其類型:

  • 42:默認(rèn) int,若超出 int 范圍則為 longlong long
  • 3.14:默認(rèn) double。
  • 'a'char 類型。
  • "hello"const char[6] 類型(包含終止符 '\0')。

字面量是C++中表示常量值的基本方式,不同類型的字面量有不同的語法和用途。

理解字面量的類型和后綴有助于避免隱式類型轉(zhuǎn)換和溢出問題,尤其是在處理大數(shù)或高精度計(jì)算時(shí)。

用戶定義字面量則提供了強(qiáng)大的擴(kuò)展能力,使代碼更具表達(dá)力。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

南川市| 巴南区| 元氏县| 甘德县| 通江县| 抚顺县| 聂荣县| 蕉岭县| 柏乡县| 江北区| 保德县| 霍山县| 即墨市| 天台县| 沾化县| 武穴市| 瑞丽市| 屏山县| 铁岭市| 扎兰屯市| 布尔津县| 壶关县| 宣威市| 红桥区| 呼图壁县| 鄂托克前旗| 五大连池市| 台南县| 虹口区| 墨江| 周至县| 阳西县| 清徐县| 沙坪坝区| 永丰县| 务川| 章丘市| 泸西县| 衢州市| 神木县| 沙雅县|