C++重点基础知识汇总大全
文章目录
- 一些基础知识点
- 指针和引用
一些基础知识点
1、十进制的数字比较长的时候,可以加'方便阅读到底是几位,输出的时候跟不加是一样的效果
// 十进制可以加'
cout << 13'890'324 << endl; // 13890324
// 二进制前加0b
cout << 0b111 << endl; //7
// 八进制前加0
cout << 011 << endl; //9
// 十六进制前加0x
cout << 0xf1 << endl; //241(1*16^0 + f*16^1 = 241)
2、常量
- 直接使用,如
cout << 123 << endl; const 类型 名字 {值}或const 类型 名字 = 值#define 名字 值(没有分号)
3、变量定义赋值可以用{},(),=,但最好用大括号{},比较安全
// 如int赋值
int a = 7.5; // 编译自动变为7
int a { 7.5 }; // 编译不通过,不会降7.5自动变成7,安全
// 大括号内什么都不写则默认赋值为0
4、整型/浮点数的表达
二进制:0b11L
八进制:011L
十进制:121L
十六进制:0xf1L
后缀(推荐用大写)
- L/l:long型
- LL/ll:long long型
- U/u:无符号型,可以与L或LL组合使用,如65535ULL
float:F/f
如200.0F (不可以是200F)
不带后缀一律视为double,如200.0
后缀为L的浮点数视为long double,如200.0L
5、浮点数运算精确度要注意
float a{ 65923600.0 }, b{ 0.000001 }, c{ a + b };
cout << (a == c ? 1 : 0) << endl; // 1
cout << a << endl; // 6.59236e+07
cout << b << endl; // 1e-06
cout << c << endl; // 6.59236e+07// 这里精度丢失了,a和c是相等的
6、类型转换
类型转换顺序:

有的编译器里int与long是平级关系
int a{ 500 };
unsigned b{ 1000 };
cout << a - b << endl; // 4294966796,这里int转换为了unsigned int
long long a{ 500 };
unsigned b{ 1000 };
cout << a - b << endl; // -500,这里unsigned int转换为了long long
int a{ 500 };
unsigned b{ 1000 };
a -= b; //a-b为unsigned,但赋值给了a,转成了int,故结果为-500
cout << a << endl; // -500
int a{ 500 };
unsigned b{ 1000 };
// C中的强转
cout << (int)(a - b) << endl; // -500
// C++中的强转:static_cast<>()
cout << static_cast<int>(a - b) << endl;
7、字符
char charA{ 'A' };
cout << charA << endl; //Awchar_t wcharA{ L'a' };
cout << wcharA << endl; // 97
wcout << wcharA << endl; // wchar_t要用wcout,输出a// 没有支持char16_t和char32_t的输出,cout只能将其输出为数字
char16_t char16{ u'a' };
cout << char16 << endl; // 97char32_t char32{ U'a' };
cout << char32 << endl; // 97
注意一下另外三个字符类型要用L,u,U激活
wchar_t要显示中文需要
setlocale(LC_ALL, "chs");
8、推断类型
auto 变量名 {初始值}
查看一个变量的类型typeid(变量).name()
auto a{ 200 };
cout << a << endl; // 200
cout << typeid(a).name() << endl; // intauto b{ 100LL };
cout << b << endl; //100
cout << typeid(b).name() << endl;; // __int64auto c{ 100L };
cout << c << endl; //100
cout << typeid(c).name() << endl; // longauto e{ L'A' };
cout << e << endl; //65
cout << typeid(e).name() << endl; // wchar_tauto d{ U'A' };
cout << d << endl; //65
cout << typeid(d).name() << endl; // char32_t
9、格式化输出流及转义
| 格式化输出流操作 | |
|---|---|
| std::fixed | 以小数点模式输出浮点数,例如3.1415926 |
| std::scientific | 以科学计数法输出浮点数,例如3E100 |
| std::defaultfloat | 恢复默认的浮点数输出 |
| std::setprecision(int) | 设置浮点数的精度,例如std::setprecision(2)后,输出 3.14 |
| std::dec | 以后输出的数字采用十进制输出,例如999 |
| std::hex | 以后输出的数字采用十六进制输出,例如FFF |
| std::oct | 以后输出的数字采用八进制输出,例如777 |
| std::showbase | 十六进制和八进制输出前显示前缀,例如0xFFF |
| std::shownobase | 关闭十六进制和八进制显示前缀 |
| std::setw(int) | 把输出内容设置宽度,例如std::setw(10) |
| std::setfill(char) | 当显示宽度超过字符宽度时,用指定字符串填充剩余内容,例如std::setfill('*') |
| std::left | 设置字符对齐模式为左对齐 |
| std::right | 设置字符对齐模式为右对齐 |
红色部分需要使用相关头文件
#include <iomanip>
10、运算符优先级
C++运算符优先级表,从上到下,从左到右,优先级依次减弱。
| 优先级 | 运算符 | 说明 | 结合性 |
|---|---|---|---|
| 1 | :: | 范围解析 | 自左向右 |
| 2 | ++ -- | 后缀自增/后缀自减 | |
| () | 括号 | ||
| [] | 数组下标 | ||
| . | 成员选择(对象) | ||
| -> | 成员选择(指针) | ||
| 3 | ++ -- | 前缀自增/前缀自减 | 自右向左 |
| + - | 加/减 | ||
| ! ~ | 逻辑非/按位取反 | ||
| (type) | 强制类型转换 | ||
| * | 取指针指向的值 | ||
| & | 取某某的地址 | ||
| sizeof | 取某某的大小 | ||
| new, new[] | 动态内存分配/动态数组内存分配 | ||
| delete, delete[] | 动态内存释放/动态数组内存释放 | ||
| 4 | .* ->* | 成员对象选择/成员指针选择 | 自左向右 |
| 5 | * / % | 乘法/除法/取余 | |
| 6 | + - | 加号/减号 | |
| 7 | << >> | 位左移/位右移 | |
| 8 | < <= | 小于/小于等于 | |
| > >= | 大于/大于等于 | ||
| 9 | == != | 等于/不等于 | |
| 10 | & | 按位与 | |
| 11 | ^ | 按位异或 | |
| 12 | | | 按位或 | |
| 13 | && | 与运算 | |
| 14 | || | 或运算 | |
| 15 | ?: | 三目运算符 | |
| 16 | = | 赋值 | 自右向左 |
| += -= | 相加后赋值/相减后赋值 | ||
| *= /= %= | 相乘后赋值/相除后赋值/取余后赋值 | ||
| <<= >>= | 位左移赋值/位右移赋值 | ||
| &= ^= |= | 位与运算后赋值/位异或运算后赋值/位或运算后赋值 | ||
| 17 | throw | 抛出异常 | |
| 18 | , | 逗号 | 自左向右 |
11、枚举变量
- 枚举类型可以提高代码的可读性和安全性
- 枚举类型默认是int类型
- 枚举类型成员只能是整数类型
- 枚举类型和其他类型转换需要强制转换
- 默认情况下,枚举类型的下一个项的初始值是上一个项的初始值+1
enum class EquipLevel :int
{normal = 10, armyA = normal,high, armyB = high,rare, armyC = rare,epic, armyD = epic,legend, armyE = legend,myth, armyF = myth
};EquipLevel A{ EquipLevel::normal };
EquipLevel B{ EquipLevel::epic };short diff = (int)B - (int)A;
cout << diff << endl; //3
c++枚举详细介绍以及具体用法
12、自定义变量名称
#define A TypeName,如#define ZS1 inttypedef TypeName A,如typedef int ZS2using A = TypeName,如using ZS3 = int
13、位运算
指针和引用
相关文章:
C++重点基础知识汇总大全
文章目录 一些基础知识点指针和引用 一些基础知识点 1、十进制的数字比较长的时候,可以加方便阅读到底是几位,输出的时候跟不加是一样的效果 // 十进制可以加 cout << 13890324 << endl; // 13890324 // 二进制前加0b cout << 0b111…...
【Linux】线程安全及锁的使用
文章目录 前言一、锁1.定义一个锁变量2.pthread_mutex_init3.pthread_mutex_destroy4.pthread_mutex_lock/pthread_mutex_unlock5.静态变量锁和全局变量锁的初始化 二、问题描述及锁的运用三、RAII风格的锁 前言 临界资源: 在多个线程或进程间共享的资源. 临界区: 代码中访问临…...
深入解析绘图范式:面向对象与直接操作的较量
新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 第一节:面向对象绘图的魅力 第二节:直接操作绘图模块的便捷性 第三…...
英特尔LLM技术挑战记录
英特尔技术介绍: Flash Attention Flash Attention 是一种高效的注意力机制实现,旨在优化大规模 Transformer 模型中的自注意力计算。在深度学习和自然语言处理领域,自注意力是 Transformer 架构的核心组件,用于模型中不同输入元…...
在 MFC 中 UNICODE 加 _T 与 L 长字符串,有什么区别?
在MFC(Microsoft Foundation Classes)和更广泛的Windows编程环境中,UNICODE宏用于指示程序应使用Unicode字符集(通常是UTF-16)来处理文本。当定义了UNICODE宏时,编译器和库函数会期待和处理宽字符ÿ…...
synopsys EDA 2016 合集 下载
包含如下安装包,如需安装服务也可联系我 FineSim_vL_2016.03 Laker201612 Library Compiler M-2016.12 Update Training PrimeTime M-2016.12 Update Training StarRC M-2016.12 Update Training SynopsysInstaller_v3.3 TSMC-65nm(OA) fm_vL-2016.03-SP1 fpga_vL-…...
CentOS 7如何使用systemctl管理应用
说明:本文介绍如何使用systemctl命令的方式来启动、查看、停止和重启应用,以安装后的prometheus、alertmanager为例; Step1:创建文件 在系统/etc/systemd/system/路径下,创建一个xxx.service文件,该文件内…...
武大深度学习期末复习-常见神经网络概念
深度学习经典神经网络概念、优缺点及应用场景 文章目录 一、多层感知机(MLP)1.1 结构和原理1.2 优缺点1.3 应用场景 二、卷积神经网络(CNN)2.1 结构和原理2.2 优缺点2.3 应用场景 三、循环神经网络(RNN)3.1…...
Leetcode3161. 物块放置查询(Go语言的红黑树 + 线段树)
题目截图 题目分析 每次1操作将会分裂成两块区间长度,以最近右端点记录左侧区间的长度即可 因此涉及到单点更新和区间查询 然后左右侧最近端点则使用redBlackTree,也就是python中的sortedlist ac code type seg []int// 把 i 处的值改成 val func (t …...
基于springboot实现医疗挂号管理系统项目【项目源码+论文说明】
基于springboot实现医疗挂号管理系统演示 摘要 在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以&…...
ScrumMaster认证机构及CSM、PSM、RSM价值比较
企业现有的经营管理模式和传统的瀑布式交付模式,已经不能适应快速变化的市场响应和客户需求,现代的敏捷工作方式在过去数年涌现,比如Scrum,XP,看板,DevOps等敏捷方法,近十年Scrum在国内企业中备…...
加氢站压缩液驱比例泵放大器
加氢站压缩液驱液压系统的要求是实现换向和速度控制,对液压动力机构而言,按原理可区分为开式(阀控)- 节流控制系统和闭式(泵控)- 容积控制系统: 阀控系统 – 节流调速系统:由BEUEC比…...
MyBatis系统学习篇 - MyBatis逆向工程
MyBatis的逆向工程是指根据数据库表结构自动生成对应的Java实体类、Mapper接口和XML映射文件的过程。逆向工程可以帮助开发人员快速生成与数据库表对应的代码,减少手动编写重复代码的工作量。 我们在MyBatis中通过逆向工具来帮我简化繁琐的搭建框架,减少…...
SpringCloud的Config配置中心,为什么要分Server服务端和Client客户端?
SpringCloud的Config配置中心,为什么要分Server服务端和Client客户端? 在SpringCloud的Config配置中心中分了Server服务端和Client客户端,为什么需要这样分呢?它的思想是所有微服务的配置文件都放到git远程服务器上,让…...
「数据结构」队列
目录 队列的基本概念 队列的实现 头文件queue.h 实现函数接口 1.初始化和销毁 2.出队列和入队列 3.获取队头元素和队尾元素 4.队列长度判空 后记 前言 欢迎大家来到小鸥的博客~ 个人主页:海盗猫鸥 本篇专题:数据结构 多谢大家的支持啦ÿ…...
Python01 注释,关键字,变量,数据类型,格式化输出
# 导入模块 import keyword# 我的第一个Python程序 这是单行注释 快捷键:CTRL/这里是多行注释 可以写多行,用 三个单引号 包起来print(Hello work) print(你好,中国)aa 这是不是注释了,是多行文本。print(aa)# 快速创建 python …...
基于单片机智能防触电装置的研究与设计
摘 要 : 针对潮湿天气下配电线路附近易发生触电事故等问题 , 对单片机的控制算法进行了研究 , 设 计 了 一 种 基 于 单片机的野外智能防触电装置。 首先建立了该装置的整体结构框架 , 再分别进行硬件设计和软件流程分析 …...
机械行业工程设计资质乙级需要哪些人员
申请机械行业工程设计资质乙级需要的人员主要包括以下几个方面,具体要求和数量根据参考文章归纳如下: 一、主要专业技术人员 数量要求:主要专业技术人员数量应不少于所申请行业资质标准中主要专业技术人员配备表规定的人数。学历和职称要求…...
vivado改变波形图窗口颜色
点击右上角的设置图标 翻译对照...
蓝桥杯练习系统(算法训练)ALGO-932 低阶行列式计算
资源限制 内存限制:64.0MB C/C时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述 给出一个n阶行列式(1<n<9),求出它的值。 输入格式 第一行给出两个正整数n,p; 接下来n行&…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...

