C++字面量总结

在现代编程中, 代码的可读性和类型安全变得越来越重要. C++ 自 C++11 开始引入了一系列新特性, 使开发者能够以更加直观的方式表示数据, 从而减少隐式转换错误并提升代码可维护性.

环境要求

本文中的代码需要编译器支持 C++23 标准才能通过.

数值

二进制、八进制、十六进制字面量

符号 类型 样例
0b0B 二进制 0b1111
0 八进制 017
0x0X 十六进制 0xF
// 不同进制字面量
constexpr int base2 = 0b1111;  // 二进制 15
constexpr int base8 = 017;     // 8进制 15
constexpr int base10 = 15;     // 十进制 15
constexpr int base16 = 0xf;    // 16进制 15
// 检查
static_assert(base2 == 15);
static_assert(base8 == 15);
static_assert(base10 == 15);
static_assert(base16 == 15);

单引号作为数值分隔符

C++14 引入了单引号作为数值分隔符,可以提高可读性.

// 单引号作为数值分隔符
constexpr int a = 1'000'000;  // 1000000, 十进制
static_assert(a == 1000000);

// 同样适用于其他进制单位
constexpr int c = 0b1'0000;  // 16, 二进制
static_assert(c == 16);

constexpr int d = 01'0000;  // 4096, 八进制
static_assert(d == 4096);

constexpr int b = 0x1'0000;  // 65536, 十六进制
static_assert(b == 65536);

修饰存储类型

符号 类型 样例
uU unsigned 1u
lL long 1l
llLL long long 1ll
z std::size_t 0z
// 修饰存储类型
#include 
auto si = 1;  // int, 默认
static_assert(std::is_same_v<decltype(si), int>);

auto ui = 1u;  // unsigned int
static_assert(std::is_same_v<decltype(ui), unsigned int

你可能感兴趣的:(Modern,C++,c++,开发语言,字面量)