C++ 语言特性26 - 字面量介绍

目录

一:概述

二:举例

1. 整数字面量

 整数类型修饰符:

2. 浮点字面量

浮点数类型修饰符:

3. 字符字面量

4. 字符串字面量

5. 布尔字面量

6. 空指针字面量

7. 用户定义字面量(C++11 引入)


一:概述

        在 C++ 中,字面量(Literal) 是指源代码中直接表示固定值的常量。字面量是不可更改的值,编译器在编译时直接将它们的值嵌入到程序中。C++ 提供了几种不同类型的字面量,用来表示整数、浮点数、字符、字符串等。

二:举例

   1. 整数字面量

    整数字面量用于表示整数常量。可以用十进制、八进制、十六进制或二进制来表示

//十进制
int a = 42;

//八进制
int b = 052;  // 以八进制表示,等价于十进制 42

//十六进制
int c = 0x2A;  // 十六进制表示,等价于十进制 42

//二进制
int d = 0b101010;  // 二进制表示,等价于十进制 42


  整数类型修饰符:

  整数字面量可以使用以下修饰符来指定类型:

  • uU:无符号整数类型
  • lL:长整型
  • llLL:长长整型
unsigned int e = 42u;    // 无符号整数
long int f = 42L;        // 长整型
long long int g = 42LL;  // 长长整型

2. 浮点字面量

浮点字面量表示带小数点的数字,默认为 double 类型。可以使用 eE 来表示指数形式的浮点。

//十进制浮点数
double h = 3.14159;

//指数表示浮点数
double i = 1.2e3;  // 等价于 1.2 * 10^3
double j = 1.2E-2; // 等价于 1.2 * 10^-2

浮点数类型修饰符:
  • fF:指定为 float 类型
  • lL:指定为 long double 类型
float k = 3.14159f;      // 浮点数为 float 类型
long double l = 3.14159L; // 浮点数为 long double 类型

3. 字符字面量

字符字面量用于表示单个字符,必须放在单引号内。例如 'A''b'

//字符字面量可以使用转义字符表示特殊字符,如 '\n'(换行符)、'\t'(制表符)、'\\'(反斜杠)。
char m = 'A';


//宽字符字面量用于表示 wchar_t 类型的字符,前缀 L 表示宽字符字面量。
wchar_t n = L'世';

4. 字符串字面量

字符串字面量是由一对双引号 " 包围的字符序列。例如 "Hello, World!"

//字符串字面量末尾会自动加上一个空字符 \0,以表示字符串的结束。
const char* str = "Hello, World!";


//宽字符串字面量用于表示宽字符序列,使用 L 作为前缀:
const wchar_t* wideStr = L"Hello, World!";


//UTF-8 编码,前缀 u8
//const char* utf8Str = u8"Hello, World!";



//UTF-16 编码,前缀 u
const char16_t* utf16Str = u"Hello, World!";


//UTF-32 编码,前缀 U
const char32_t* utf32Str = U"Hello, World!";


//多行字符串字面量
const char* str = R"(This is a multi-line string
that spans multiple lines
without needing special characters like \n)";


//多行字符串字面量
const char* str = "This is a multi-line string\n"
                  "that spans multiple lines\n"
                  "using string concatenation.";

5. 布尔字面量

布尔字面量表示 truefalse

bool p = true;
bool q = false;

6. 空指针字面量

C++11 引入了 nullptr 作为空指针字面量,取代传统的 NULL

int* r = nullptr;

7. 用户定义字面量(C++11 引入)

C++11 允许开发者定义自定义字面量,主要用于增强代码的可读性。例如,可以通过用户定义字面量来创建单位表示法,如秒、米等。

long double operator"" _kg(long double x) {
    return x * 1000; // 转换为克
}

int main() {
    auto weight = 2.5_kg; // 2.5 千克 = 2500 克
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑不溜秋的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值