当前位置: 首页 > news >正文

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=赋值自右向左
+= -=相加后赋值/相减后赋值
*= /= %=相乘后赋值/相除后赋值/取余后赋值
<<= >>=位左移赋值/位右移赋值
&= ^= |=位与运算后赋值/位异或运算后赋值/位或运算后赋值
17throw抛出异常
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 int
  • typedef TypeName A ,如typedef int ZS2
  • using A = TypeName,如using ZS3 = int

13、位运算

指针和引用

相关文章:

C++重点基础知识汇总大全

文章目录 一些基础知识点指针和引用 一些基础知识点 1、十进制的数字比较长的时候&#xff0c;可以加方便阅读到底是几位&#xff0c;输出的时候跟不加是一样的效果 // 十进制可以加 cout << 13890324 << endl; // 13890324 // 二进制前加0b cout << 0b111…...

【Linux】线程安全及锁的使用

文章目录 前言一、锁1.定义一个锁变量2.pthread_mutex_init3.pthread_mutex_destroy4.pthread_mutex_lock/pthread_mutex_unlock5.静态变量锁和全局变量锁的初始化 二、问题描述及锁的运用三、RAII风格的锁 前言 临界资源: 在多个线程或进程间共享的资源. 临界区: 代码中访问临…...

深入解析绘图范式:面向对象与直接操作的较量

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 第一节&#xff1a;面向对象绘图的魅力 第二节&#xff1a;直接操作绘图模块的便捷性 第三…...

英特尔LLM技术挑战记录

英特尔技术介绍&#xff1a; Flash Attention Flash Attention 是一种高效的注意力机制实现&#xff0c;旨在优化大规模 Transformer 模型中的自注意力计算。在深度学习和自然语言处理领域&#xff0c;自注意力是 Transformer 架构的核心组件&#xff0c;用于模型中不同输入元…...

在 MFC 中 UNICODE 加 _T 与 L 长字符串,有什么区别?

在MFC&#xff08;Microsoft Foundation Classes&#xff09;和更广泛的Windows编程环境中&#xff0c;UNICODE宏用于指示程序应使用Unicode字符集&#xff08;通常是UTF-16&#xff09;来处理文本。当定义了UNICODE宏时&#xff0c;编译器和库函数会期待和处理宽字符&#xff…...

synopsys EDA 2016 合集 下载

包含如下安装包&#xff0c;如需安装服务也可联系我 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管理应用

说明&#xff1a;本文介绍如何使用systemctl命令的方式来启动、查看、停止和重启应用&#xff0c;以安装后的prometheus、alertmanager为例&#xff1b; Step1&#xff1a;创建文件 在系统/etc/systemd/system/路径下&#xff0c;创建一个xxx.service文件&#xff0c;该文件内…...

武大深度学习期末复习-常见神经网络概念

深度学习经典神经网络概念、优缺点及应用场景 文章目录 一、多层感知机&#xff08;MLP&#xff09;1.1 结构和原理1.2 优缺点1.3 应用场景 二、卷积神经网络&#xff08;CNN&#xff09;2.1 结构和原理2.2 优缺点2.3 应用场景 三、循环神经网络&#xff08;RNN&#xff09;3.1…...

Leetcode3161. 物块放置查询(Go语言的红黑树 + 线段树)

题目截图 题目分析 每次1操作将会分裂成两块区间长度&#xff0c;以最近右端点记录左侧区间的长度即可 因此涉及到单点更新和区间查询 然后左右侧最近端点则使用redBlackTree&#xff0c;也就是python中的sortedlist ac code type seg []int// 把 i 处的值改成 val func (t …...

基于springboot实现医疗挂号管理系统项目【项目源码+论文说明】

基于springboot实现医疗挂号管理系统演示 摘要 在如今社会上&#xff0c;关于信息上面的处理&#xff0c;没有任何一个企业或者个人会忽视&#xff0c;如何让信息急速传递&#xff0c;并且归档储存查询&#xff0c;采用之前的纸张记录模式已经不符合当前使用要求了。所以&…...

ScrumMaster认证机构及CSM、PSM、RSM价值比较

企业现有的经营管理模式和传统的瀑布式交付模式&#xff0c;已经不能适应快速变化的市场响应和客户需求&#xff0c;现代的敏捷工作方式在过去数年涌现&#xff0c;比如Scrum&#xff0c;XP&#xff0c;看板&#xff0c;DevOps等敏捷方法&#xff0c;近十年Scrum在国内企业中备…...

加氢站压缩液驱比例泵放大器

加氢站压缩液驱液压系统的要求是实现换向和速度控制&#xff0c;对液压动力机构而言&#xff0c;按原理可区分为开式&#xff08;阀控&#xff09;- 节流控制系统和闭式&#xff08;泵控&#xff09;- 容积控制系统&#xff1a; 阀控系统 – 节流调速系统&#xff1a;由BEUEC比…...

MyBatis系统学习篇 - MyBatis逆向工程

MyBatis的逆向工程是指根据数据库表结构自动生成对应的Java实体类、Mapper接口和XML映射文件的过程。逆向工程可以帮助开发人员快速生成与数据库表对应的代码&#xff0c;减少手动编写重复代码的工作量。 我们在MyBatis中通过逆向工具来帮我简化繁琐的搭建框架&#xff0c;减少…...

SpringCloud的Config配置中心,为什么要分Server服务端和Client客户端?

SpringCloud的Config配置中心&#xff0c;为什么要分Server服务端和Client客户端&#xff1f; 在SpringCloud的Config配置中心中分了Server服务端和Client客户端&#xff0c;为什么需要这样分呢&#xff1f;它的思想是所有微服务的配置文件都放到git远程服务器上&#xff0c;让…...

「数据结构」队列

目录 队列的基本概念 队列的实现 头文件queue.h 实现函数接口 1.初始化和销毁 2.出队列和入队列 3.获取队头元素和队尾元素 4.队列长度判空 后记 前言 欢迎大家来到小鸥的博客~ 个人主页&#xff1a;海盗猫鸥 本篇专题&#xff1a;数据结构 多谢大家的支持啦&#xff…...

Python01 注释,关键字,变量,数据类型,格式化输出

# 导入模块 import keyword# 我的第一个Python程序 这是单行注释 快捷键&#xff1a;CTRL/这里是多行注释 可以写多行&#xff0c;用 三个单引号 包起来print(Hello work) print(你好&#xff0c;中国)aa 这是不是注释了&#xff0c;是多行文本。print(aa)# 快速创建 python …...

基于单片机智能防触电装置的研究与设计

摘 要 &#xff1a; 针对潮湿天气下配电线路附近易发生触电事故等问题 &#xff0c; 对单片机的控制算法进行了研究 &#xff0c; 设 计 了 一 种 基 于 单片机的野外智能防触电装置。 首先建立了该装置的整体结构框架 &#xff0c; 再分别进行硬件设计和软件流程分析 &#xf…...

机械行业工程设计资质乙级需要哪些人员

申请机械行业工程设计资质乙级需要的人员主要包括以下几个方面&#xff0c;具体要求和数量根据参考文章归纳如下&#xff1a; 一、主要专业技术人员 数量要求&#xff1a;主要专业技术人员数量应不少于所申请行业资质标准中主要专业技术人员配备表规定的人数。学历和职称要求…...

vivado改变波形图窗口颜色

点击右上角的设置图标 翻译对照...

蓝桥杯练习系统(算法训练)ALGO-932 低阶行列式计算

资源限制 内存限制&#xff1a;64.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 给出一个n阶行列式(1<n<9)&#xff0c;求出它的值。 输入格式 第一行给出两个正整数n,p&#xff1b;   接下来n行&…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 &#xff08;一&#xff09;引用计数法 &#xff08;二&#xff09;可达性分析算法 二、垃圾回收算法 &#xff08;一&#xff09;标记清除 &#xff08;二&#xff09;标记整理 &#xff08;三&#xff09;复制 &#xff08;四&#xff…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...

aardio 自动识别验证码输入

技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”&#xff0c;于是尝试整合图像识别与网页自动化技术&#xff0c;完成了这套模拟登录流程。核心思路是&#xff1a;截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...

Django RBAC项目后端实战 - 03 DRF权限控制实现

项目背景 在上一篇文章中&#xff0c;我们完成了JWT认证系统的集成。本篇文章将实现基于Redis的RBAC权限控制系统&#xff0c;为系统提供细粒度的权限控制。 开发目标 实现基于Redis的权限缓存机制开发DRF权限控制类实现权限管理API配置权限白名单 前置配置 在开始开发权限…...