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 克
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/887059.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

芝法酱学习笔记(0.5)——使用jenkins做自动打包

前言 上节讲了SpringBoot上的打包。但这些过程都是手动的,在实际的开发测试时,自动化的打包部署,可以大大提升团队开发的效率 一、去官网下载 1.1 官网安装命令 对于如何安装的问题,我向来推荐官网 wget -O /usr/share/keyri…

针对考研的C语言学习(定制化快速掌握重点4)

typedef的使用 简化变量类型 逻辑结构 集合结构:无关系 线性结构:一对一 树形结构:一对多 图形结构:多对多 存储结构 顺序存储和链式存储(考代码) 顺序存储优点:1.可以实现随机存取。2.…

C语言 | Leetcode C语言题解之题451题根据字符出现频率排序

题目: 题解: #define HASH_FIND_CHAR(head, findint, out) HASH_FIND(hh, head, findint, sizeof(char), out) #define HASH_ADD_CHAR(head, intfield, add) HASH_ADD(hh, head, intfield, sizeof(char), add)struct HashTable {char key;int val;UT_ha…

今日凌晨,ChatGPT重磅更新!—— 我心目中的终极AGI界面

今日凌晨,ChatGPT重磅更新!—— 我心目中的终极AGI界面 我心目中的终极 AGI 界面是一张空白画布(canvas)。 今日凌晨,OpenAI 发布 canvas,一个与 ChatGPT 合作写作和编程的新界面! canvas&…

C语言复习概要(二)

本文目录 C语言中的数组与函数详解1. 引言2. 数组2.1. 什么是数组?语法:示例: 2.2. 数组的初始化示例 1:在声明时初始化示例 2:部分初始化示例 3:运行时赋值 2.3. 数组的访问与修改示例: 2.4. 多…

Docker启动 Redis提示:Can‘t initialize Background Jobg

问题说明: 在使用docker启动redis失败,但是查看容器日志,除了提示 Fatal:Cant initialize Background Jobg,没有其他错误信息。经过长时间查找资料及试错,现记录下可能的产生原因及解决方案,以便以后参考。 产生原因&…

【从零开始实现stm32无刷电机FOC】【实践】【7.1/7 硬件设计】

目录 stm32电路磁编码器电路电机驱动电路电流采样电路电机选择本文示例硬件说明 为了承载和验证本文的FOC代码工程,本节设计了一个简易的三相无刷电机 硬件套件,主控采用非常常用的stm32f103c8t6单片机,电机编码器采用MT6701,电机…

mysql怎么修改一个字段中的所有部分数据

UPDATE videos SET VideoCode replace(VideoCode,flv,mp4); update 表名 set 字段名 replace(字段名,‘修改前’,‘修改后’);

【工欲善其事】巧用 Sublime Text 生成带格式的 HTML 片段

文章目录 【工欲善其事】巧用 Sublime Text 生成带格式的 HTML 片段1 问题由来2 操作流程步骤1:打开代码片段定制页步骤2:在新标签页输入定制 XML步骤3:保存定义内容步骤4:功能测试 3 拓展 【工欲善其事】巧用 Sublime Text 生成带…

Elasticsearch使用Easy-Es + RestHighLevelClient实现深度分页跳页

注意!!!博主只在测试环境试了一下,没有发到生产环境跑。因为代码还没写完客户说不用弄了( •̩̩̩̩_•̩̩̩̩ ) 也好,少个功能少点BUG 使用from size的时候发现存在max_result_window10000的限制&…

如何使用工具删除 iPhone 上的图片背景

在 iPhone 上删除背景图像变得简单易行。感谢最近 iOS 更新中引入的新功能。如今,iOS 用户现在可以毫不费力地删除背景,而无需复杂的应用程序。在这篇文章中,您将学习如何使用各种方法去除 iPhone 上的背景。这可确保您可以选择最适合您偏好的…

自动驾驶核心技术:感知融合、规划决策、控制执行

1、前言 简单来说,实现自动驾驶需要解决三个核心问题:“我在哪?我要去哪?我该如何去?”能完整解决这三个问题就是真正的自动驾驶。 目前,自动驾驶汽车关键技术主要包括环境感知、精准定位、决策与规划、控制与执行、高精地图与车联网V2X以…

Linux下的IO模型

阻塞与非阻塞IO(Input/Output) 阻塞与非阻塞IO(Input/Output)是计算机操作系统中两种不同的文件或网络通信方式。它们的主要区别在于程序在等待IO操作完成时的行为。 阻塞IO(Blocking IO) 在阻塞IO模式下…

无IDEA不Java:快速掌握Java集成开发环境

IntelliJ IDEA是一种强大的Java集成开发环境,是Java开发人员的首选工具之一。本文将介绍IDEA的基本使用方法和常用功能,以帮助初学者快速上手。 安装和配置 首先,需要下载并安装IntelliJ IDEA。在安装完成后,需要配置JDK&#xff…

pygame--超级马里奥(万字详细版)

超级马里奥点我下载https://github.com/marblexu/PythonSuperMario 1.游戏介绍 小时候的经典游戏,代码参考了github上的项目Mario-Level-1,使用pygame来实现,从中学习到了横版过关游戏实现中的一些处理方法。原项目实现了超级玛丽的第一个小…

稀缺森林火险等级预测算法,基于xgboost方法的火险等级预测,共划分5级,依据当前地区月份,降水量,风力等参数进行预测,并提供15000字的报告

森林火险等级预测算法,基于xgboost方法的火险等级预测,共划分5级,依据当前地区月份,降水量,风力等参数进行预测,并提供15000字的报告 森林火险等级预测算法介绍 项目名称 基于XGBoost的森林火险等级预测算…

无环SLAM系统集成后端回环检测模块(loop):SC-A-LOAM以及FAST_LIO_SLAM

最近在研究SLAM目标检测相关知识,看到一篇论文,集成了SC-A-LOAM作为后端回环检测模块,在学习了论文相关内容后决定看一下代码知识,随后将其移植,学习过程中发现我找的论文已经集成了回环检测模块,但是我的另…

mybatis-plus使用总结

基本使用 mybatis-plus依赖 <!-- mybatis-plus开始 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.7</version></dependency><dependency>&l…

【Linux探索学习】第二弹——Linux的基础指令(中)——夯实基础第二篇

Linux基础指令&#xff08;上&#xff09;&#xff1a;【Linux探索学习】第一弹——Linux的基本指令&#xff08;上&#xff09;——开启Linux学习第一篇-CSDN博客 前言&#xff1a; 在前面我们已经讲解了一些常用的Linux的基础指令&#xff0c;那些当然是远远不够的&#xff…

自定义 shell文件系统

&#x1f3f7;️ 材料准备 创建一个文件:myshell.c: #include <stdio.h>int main() {return 0; }创建一个 Makefile 文件&#xff0c;文件内容如下&#xff1a; 1 mybash:myshell.c2 g -o $ $^ -stdc11 3 .PHONY:…