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

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

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

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

1. 整型字面量(Integer Literals)

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

進(jìn)制表示

  • 十進(jìn)制:普通數(shù)字(無前綴),如 42、100。
  • 八進(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(等價于 0.25)。
  • 指數(shù)形式:使用 eE 表示科學(xué)計數(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)

用于表示單個字符,用單引號 ' 包圍:

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

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編碼的歐元符號

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

用于表示文本,用雙引號 " 包圍:

  • 普通字符串:如 "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)

表示邏輯值,只有兩個:

  • 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)算符實現(xiàn)。標(biāo)準(zhǔn)庫中也有一些預(yù)定義的UDL,例如:

  • 時間單位1h(1小時)、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)

編譯器會根據(jù)字面量的形式和后綴自動推導(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ù)或高精度計算時。

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

總結(jié)

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

相關(guān)文章

最新評論

当阳市| 沁阳市| 花垣县| 大洼县| 饶阳县| 新建县| 韶关市| 凤城市| 靖西县| 平利县| 兴山县| 湖北省| 东兴市| 横山县| 鄱阳县| 裕民县| 长葛市| 梧州市| 建始县| 朔州市| 南丰县| 绥芬河市| 昌平区| 锡林郭勒盟| 广安市| 集安市| 高邑县| 贡山| 南涧| 上林县| 庆元县| 万载县| 石景山区| 德钦县| 綦江县| 桃江县| 九寨沟县| 高雄县| 荃湾区| 刚察县| 福清市|