【C++】printf 函数详解与格式化输出控制
文章目录
- 💯前言
- 💯`printf` 基础用法
- 1.1 `printf` 的常见占位符
- 1.2 占位符与参数的对应关系
- 1.3 换行控制
- 示例:
- 💯格式化输出控制
- 2.1 输出宽度控制
- 2.1.1 指定最小宽度
- 2.2 对齐方式控制
- 示例:
- 2.3 限定小数位数
- 示例:
- 2.4 同时指定宽度和小数位数
- 2.5 动态指定宽度和小数位数
- 示例:
- 2.6 科学计数法输出
- 示例:
- 💯实际应用场景与总结
- 3.1 表格输出
- 3.2 数值精度控制
- 💯小结
💯前言
- 在 C++ 编程的学习与实践过程中,
printf
函数是用于实现格式化输出的核心工具之一。作为 C 标准库中的重要功能,printf
不仅构成了输入输出操作的基础,它的广泛应用更使其成为控制台交互和数据呈现的关键工具。从简单的调试信息打印到复杂的格式化报告,printf
函数在众多场景中展现出不可替代的作用。本文旨在对printf
函数进行深入探讨,分析其多种控制方式和潜力,包括宽度控制、对齐方式的调整、精度设定等。此外,还通过详细的代码示例,系统化帮助读者掌握这一工具的高级用法。
C++ 参考手册
printf
💯printf
基础用法
printf
函数是 C 标准输入输出库 <cstdio>
中的一个核心函数,用于格式化输出。其函数原型如下:
int printf(const char *format, ...);
format
:格式字符串,用于定义输出文本的格式。格式字符串不仅可以包含普通字符,还包含格式说明符,这些占位符用于插入变量的值。通过这些占位符,开发者可以灵活地控制如何将变量的值打印到控制台。- 可变参数:用于替代
format
字符串中的占位符。根据给定参数的数量和类型,printf
会将这些值按照指定格式输出到标准输出设备上。
1.1 printf
的常见占位符
占位符 | 描述 |
---|---|
%d | 十进制整数。 |
%lld | 十进制 long long int 类型。 |
%f | 小数(包括 float 和 double 类型)。 |
%Lf | long double 类型浮点数。 |
%c | 单个字符。 |
%s | 字符串。 |
%a | 十六进制浮点数,字母输出为小写。 |
%A | 十六进制浮点数,字母输出为大写。 |
%e | 使用科学计数法表示的浮点数,指数部分为小写 e 。 |
%E | 使用科学计数法表示的浮点数,指数部分为大写 E 。 |
%i | 整数,功能与 %d 类似。 |
%g | 浮点数,有效数字为 6 位;当整数部分超过 6 位时,自动转为科学计数法(小写 e )。 |
%G | 类似于 %g ,但科学计数法中使用大写 E 。 |
%hd | short int 类型的十进制整数。 |
%ho | short int 类型的八进制整数。 |
%hx | short int 类型的十六进制整数。 |
%hu | unsigned short int 类型。 |
%ld | long int 类型的十进制整数。 |
%lo | long int 类型的八进制整数。 |
%lx | long int 类型的十六进制整数。 |
%lu | unsigned long int 类型。 |
%llo | long long int 类型的八进制整数。 |
%llx | long long int 类型的十六进制整数。 |
%llu | unsigned long long int 类型。 |
%Le | long double 类型的科学计数法浮点数。 |
%n | 已输出的字符数量,不进行输出操作,仅将值存储在指定变量中。 |
%o | 八进制整数。 |
%p | 指针地址。 |
%u | 无符号整数(unsigned int 类型)。 |
%x | 十六进制整数,小写字母。 |
%zd | size_t 类型。 |
%% | 输出一个百分号字符。 |
这些占位符涵盖了大多数常见的数据类型,是有效掌握 printf
函数的关键。特别是在多种数据类型混合输出的情况下,合理选择占位符是确保输出结果准确性与可读性的基本保证。
1.2 占位符与参数的对应关系
在 printf()
中,格式化字符串中的占位符可以被动态的参数值替代,从而使得输出内容更加灵活。
#include <cstdio>
// 输出:There are 3 apples
int main()
{printf("There are %d apples\n", 3);return 0;
}
在上述示例中,字符串 "There are %d apples\n"
包含一个占位符 %d
,用于表示即将插入的整数。这里 %d
指定了需要一个整数来替代,而 3
作为参数传递给 printf
,替换 %d
。因此,最终的输出结果是 There are 3 apples
。
这种方式可以灵活地输出不同类型的数据,例如字符串、浮点数等。理解占位符与参数之间的对应关系对于确保输出的正确性至关重要。如果占位符和参数类型不匹配,可能会导致错误输出,甚至引发未定义行为。
1.3 换行控制
使用 printf
输出内容时,默认情况下光标会停留在输出文本的末尾,不会自动换行。如果希望输出后换行,需要在字符串中显式添加 \n
换行符。
#include <cstdio>
int main()
{printf("Hello"); // 输出后不会自动换行printf("World!"); return 0;
}
示例:
#include <cstdio>
int main()
{printf("Hello, World!\n"); // 输出后换行return 0;
}
此外,可以在格式字符串中添加多个换行符,以实现多行输出。例如:
#include <cstdio>int main() {printf("Hello\nWorld\n");return 0;
}
输出结果为:
Hello
World
在 Hello
后添加换行符 \n
使得输出的下一部分继续在新的一行,从而实现换行效果。在实践中,合理使用换行符可以显著改善输出的可读性,尤其在需要以分行方式呈现列表或表格信息时,这种控制尤为重要。
💯格式化输出控制
通过格式化输出控制,printf
函数可以更加精确地控制数据呈现,包括宽度控制、对齐方式调整以及小数精度设定。
2.1 输出宽度控制
printf
函数允许通过指定宽度参数来控制输出内容的显示长度。如果实际内容不足指定宽度,系统会在内容前面补充空格。
2.1.1 指定最小宽度
通过在占位符中指定一个数值,可以控制输出内容的最小宽度。例如:
#include <cstdio>int main() {printf("%5d\n", 123);return 0;
}
%5d
表示输出的整数最小宽度为 5。- 如果输出内容不足 5 个字符,
printf
会在左侧补空格以填充到指定宽度。
输出:
123
如果实际内容超过指定的最小宽度,则按实际长度显示,不进行截断。例如:
#include <cstdio>int main() {printf("%5d\n", 123456);return 0;
}
输出:
123456
在实际应用中,限定输出宽度的功能常用于对齐多行输出,使得表格数据更加整齐,特别是在输出多个数据项时尤为重要。
2.2 对齐方式控制
默认情况下,printf
的输出是右对齐的。如果希望输出内容左对齐,可以在宽度说明符前添加 -
符号。
示例:
#include <cstdio>int main() {printf("%-5d\n", 123);printf("%-5d\n", 66);return 0;
}
%-5d
表示宽度为 5 且左对齐。
输出:
123
66
左对齐的输出方式常用于对齐表格中的不同列,特别是包含不同长度的字符串或数值列时,有助于提高输出的清晰度和可读性。
2.3 限定小数位数
对于浮点数,printf
允许通过精度控制来限定小数位数。默认情况下,%f
输出小数点后 6 位。
示例:
#include <cstdio>int main() {printf("%.2f\n", 0.5);return 0;
}
%.2f
表示保留 2 位小数。
输出:
0.50
如果需要保留 3 位小数,可以写成 %.3f
。
对小数位数的精度控制在财务数据或科学计算中非常关键,确保数值符合特定的精度要求,避免错误的精度影响结果。
2.4 同时指定宽度和小数位数
在 printf
中,可以同时指定输出的最小宽度和小数点后的精度。例如:
printf("%6.2f\n", 0.5);
%6.2f
:6
表示最小宽度为 6。.2
表示保留 2 位小数。
输出:
0.50
由于实际输出为 4 个字符,因此在前面补充 2 个空格以满足宽度要求。这种格式控制在需要对齐输出的数据表格时非常实用,确保各行数据对齐,避免因数据长度不同导致的混乱。
2.5 动态指定宽度和小数位数
printf
还支持使用 *
动态指定宽度和精度,这在需要根据运行时条件调整输出格式时非常有用。
示例:
#include <cstdio>int main() {printf("%*.*f\n", 6, 2, 0.5);return 0;
}
- 第一个
*
表示宽度,通过参数6
动态指定。 - 第二个
*
表示小数位数,通过参数2
动态指定。 - 输出的数值为
0.5
。
输出:
0.50
通过这种方式,可以根据程序逻辑动态调整输出格式,而无需在编译时硬编码格式字符串,从而提升代码的灵活性和可维护性。
2.6 科学计数法输出
使用 %e
或 %E
可以将浮点数以科学计数法形式输出。
示例:
#include <cstdio>int main() {printf("%e\n", 12345.6789);return 0;
}
输出:
1.234568e+04
可以使用 %.ne
限定小数位数,在处理非常大或非常小的数值时,科学计数法可以显著提高数据的可读性。
💯实际应用场景与总结
3.1 表格输出
printf
的宽度和对齐控制非常适合用于输出对齐的数据表格。例如:
#include <cstdio>int main() {printf("%-10s %10s\n", "Name", "Score");printf("%-10s %10d\n", "Alice", 90);printf("%-10s %10d\n", "Bob", 85);return 0;
}
输出:
Name Score
Alice 90
Bob 85
结合左对齐和右对齐的控制,使得输出表格整齐、美观,尤其在处理多列数据时,这种对齐控制显著提高了数据的可读性和视觉上的整洁性。
3.2 数值精度控制
在财务和科学计算中,数值的精度控制至关重要。例如:
#include <cstdio>int main() {printf("Total Amount: $%.2f\n", 123.456);return 0;
}
输出:
Total Amount: $123.46
通过控制小数位数,能够确保金额显示符合财务标准,避免过多或不足的小数位导致的误差,使输出更为专业和规范。
💯小结
本文详细探讨了 C++ 中printf
函数的多种用法,包括 基础输出、格式化控制、宽度与小数位数设置,以及 动态指定宽度和精度 等高级用法。printf
是一个功能强大且灵活的输出工具,可以帮助开发者以多种方式格式化输出数据。在需要精细控制输出内容的场景中,掌握这些用法至关重要。
printf
提供了丰富的输出控制选项,使得程序的输出更加 整齐、清晰 和 专业。它被广泛应用于 调试、报告生成、控制台交互 等多个场景。如果对printf
的某些用法存在疑问,可以参考本文的代码示例进行实践,因为实践是理解和掌握这些概念的最佳途径。
通过不断的练习与应用,你将逐步掌握printf
的各种高级用法,使得你的代码在输出方面更加 灵活、精细 和 专业。希望本文能为你的编程学习与工作提供有益的帮助,并助力你在 C++ 编程的道路上迈向更高的水平。
相关文章:
【C++】printf 函数详解与格式化输出控制
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯printf 基础用法1.1 printf 的常见占位符1.2 占位符与参数的对应关系1.3 换行控制示例: 💯格式化输出控制2.1 输出宽度控制2.1.1 指定最小宽度 2.2 …...
在21世纪的我用C语言探寻世界本质——字符函数和字符串函数(1)
人无完人,持之以恒,方能见真我!!! 共同进步!! 文章目录 一、字符分类函数二、字符转换函数三、strlen的使用和模拟实现四、strcpy的使用和模拟实现五、strcat的使用和模拟实现六、strcmp的使用和…...
【专题】存储器管理
1. 存储器的层次结构 在计算机执行时,几乎每一条指令都涉及对存储器的访问,因此要求对存储器的访问速度能跟得上处理机的运行速度。 存储器的速度必须非常快,能与处理机的速度相匹配,否则会明显地影响到处理机的运行。 此外还要求…...
python股票数据分析(Pandas)练习
需求: 使用pandas读取一个CSV文件,文件内容包括股票名称、价格和交易量。完成以下任务: 找出价格最高的股票; 计算总交易量; 绘制价格折线图。 代码实现: import pandas as pd import matplotlib.pyplot …...
Hadoop生态圈框架部署(八)- Hadoop高可用(HA)集群部署
文章目录 前言一、部署规划二、Hadoop HA集群部署(手动部署)1. 下载hadoop2. 上传安装包2. 解压hadoop安装包3. 配置hadoop配置文件3.1 虚拟机hadoop1修改hadoop配置文件3.1.1 修改 hadoop-env.sh 配置文件3.3.2 修改 core-site.xml 配置文件3.3.3 修改 …...
抗干扰设计的检查细则
抗干扰设计是确保电子系统或设备在复杂电磁环境中稳定运行的重要环节,涉及多个方面的设计和实施。以下是对抗干扰设计的检查细则的详细归纳: 一、电源线与地线设计 电源线设计:选择合适的电源,尽量加宽电源线,保证电源…...
[Redis#12] 常用类型接口学习 | string | list
目录 0.准备 1.string get | set set_with_timeout_test.cpp set_nx_xx_test.cpp mset_test.cpp mget_test.cpp getrange_setrange_test.cpp incr_decr_test.cpp 2.list lpush_lrange_test.cpp rpush_test.cpp lpop_rpop_test.cpp blpop_test.cpp llen_test.cpp…...
React的ts文件中通过createElement拼接一段内容出来
比如接口返回一个值 const values [23.00, 40.00/kg];想做到如下效果, 如果单纯的用render渲染会很简单, 但是在ts文件中处理,所以采用了createElement拼接 代码如下: format: (values: string[]) > {if (!values || !val…...
【Git系列】Git 提交历史分析:深入理解`git log`命令
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
深度学习笔记——生成对抗网络GAN
本文详细介绍早期生成式AI的代表性模型:生成对抗网络GAN。 文章目录 一、基本结构生成器判别器 二、损失函数判别器生成器交替优化目标函数 三、GAN 的训练过程训练流程概述训练流程步骤1. 初始化参数和超参数2. 定义损失函数3. 训练过程的迭代判别器训练步骤生成器…...
《地球科学与环境学报》
《地球科学与环境学报》报道范围涵盖基础地质、矿产地质、水资源与环境、工程地质、地球物理、地球信息科学等领域,刊载国内外未公开发表的有创新性或意义重大的研究论文和综述文章。 来稿必须包括以下项目:题名(尽可能不要超过20字&…...
k8s 1.28 聚合层部署信息记录
–requestheader-client-ca-file –requestheader-allowed-namesfront-proxy-client –requestheader-extra-headers-prefixX-Remote-Extra- –requestheader-group-headersX-Remote-Group –requestheader-username-headersX-Remote-User –proxy-client-cert-file –proxy-cl…...
组件化设计的意义
鸿蒙操作系统(HarmonyOS)是华为公司开发的一款面向未来、面向全场景的分布式操作系统。它不仅能够支持多种智能终端设备,还能够实现跨设备之间的协同工作。为了满足不同设备的资源能力和业务需求,鸿蒙操作系统采用了组件化的设计方…...
2025 年河北省职业院校大数据应用与 服务(中职组)赛项样题
— 1 — 2025 年河北省职业院校大数据应用与 服务(中职组)赛项样题 一、背景描述 近年来,随着旅游业的快速发展和社交媒体的普及,一 些目的地因其独特的魅力或者事件而迅速走红,吸引了大量 游客涌入,使得当…...
宏集eXware物联网网关在水务管理系统上的应用
一、前言 水务管理系统涵盖了对城市水网、供水、排水、污水处理等多个环节的监控与管理。随着物联网(IoT)技术的快速发展,物联网网关逐渐成为水务管理系统中的关键组成部分。 宏集物联网网关以其高效的数据采集、传输和管理功能,…...
【看海的算法日记✨优选篇✨】第三回:二分之妙,寻径中道
🎬 个人主页:谁在夜里看海. 📖 个人专栏:《C系列》《Linux系列》《算法系列》 ⛰️ 一念既出,万山无阻 目录 📖一、算法思想 细节问题 📚左右临界 📚中点选择 📚…...
yolov5 解决:export GIT_PYTHON_REFRESH=quiet
当我们在第一次运行YOLOv5中的train.py程序时:可能会出现以下报错: This initial warning can be silenced or aggravated in the future by setting the $GIT_PYTHON_REFRESH environment variable. Use one of the following values: - quiet|q|silen…...
MongoDB聚合操作
1.聚合操作 聚合操作处理数据记录并返回计算结果。聚合操作组值来自多个文档,可以对分组数据执行各种操作以返回单个结果。聚合操作包含三类:单一作用聚合、聚合管道、MapReduce。 单一作用聚合:提供了对常见聚合过程的简单访问,…...
Apple雷电5到底有多快?
在科技日新月异的今天,苹果公司始终走在技术创新的前沿。2023年9月12日,随着英特尔发布雷电5(Thunderbolt 5)规范,苹果迅速跟进,将其应用于自家的产品中。雷电5接口以其卓越的性能,彻底颠覆了我…...
项目快过:知识蒸馏 | 目标检测 |FGD | Focal and Global Knowledge Distillation for Detectors
公开时间:2022年3月9号 项目地址:https://github.com/yzd-v/FGD 论文地址:https://arxiv.org/pdf/2111.11837 知识蒸馏已成功地应用于图像分类。然而,目标检测要复杂得多,大多数知识蒸馏方法都失败了。本文指出&#…...
Spring Boot日志总结
文章目录 1.我们的日志2.日志的作用3.使用日志对象打印日志4.日志框架介绍5.深入理解门面模式(外观模式)6.日志格式的说明7.日志级别7.1日志级别分类7.2配置文件添加日志级别 8.日志持久化9.日志文件的拆分9.1官方文档9.2IDEA演示文件分割 10.日志格式的配置11.更简单的日志输入…...
PostgreSQL最常用数据类型-重点说明自增主键处理
简介 PostgreSQL提供了非常丰富的数据类型,我们平常使用最多的基本就3类: 数字类型字符类型时间类型 这篇文章重点介绍这3中类型,因为对于高并发项目还是推荐:尽量使用简单类型,把运算和逻辑放在应用中,…...
androidstudio 最新继承 proto kts 方式
在Android Studio中,如果你使用的是Kotlin DSL(.kts文件)来配置你的Gradle项目,并且你想集成Protocol Buffers(Proto),你需要稍微调整你的配置方式。以下是如何在Kotlin DSL中配置Proto集成的步…...
【STM32学习】TB6612FNG驱动芯片的学习,驱动电路的学习
目录 1、TB6612电机驱动芯片 1.1如下是芯片的引脚图: 1.2如下图是电机的控制逻辑: 1.3MOS管运转逻辑 1.3典型应用电路 2、H桥驱动电路 2.1、单极模式 2.2、双极模式 2.3、高低端MOS管导通条件 2.4、H桥电路设计 2.5、自举电路 3、电气特性 3…...
【AI战略思考13】克服懒惰,保持专注,提升效率,不再焦虑
【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 引言 我发现自己最近非常懒惰,浪费了很多时间,也容易分心,不够专注,效率低下,且每天都有点焦虑,因此制定了下面的要求和作息时间表。 目…...
基于Vue3+Element Plus 实现多表单校验
使用场景 表单校验在日常的开发需求中是一种很常见的需求,通常在提交表单发起请求前校验用户输入是否符合规则,通常只需formRef.value.validate()即可校验,但是,例如一些多步骤表单、动态表单、以及不同的用户角色可能看到不同的表…...
“岗位复合化、技能层次化” 高职大数据技术专业人才培养实践
在全球数字化浪潮的推动下,大数据技术已经成为引领社会进步和经济发展的核心动力。随着《关于深化现代职业教育体系建设改革的意见》等系列指导问文件的发布,我国高职大数据技术专业的教育正迎来全新机遇与挑战。这些政策不仅明确了职业教育改革的方向&a…...
Day2 生信新手笔记: Linux基础
一、基础知识 1.1 服务器 super computer 或 server 1.2 组学数据分析 组学数据:如基因组学、转录组学、蛋白质组学等; 上游分析:主要涉及原始数据的获取和初步处理,计算量大,消耗的资源较多,在服务器完…...
AI开发-数据可视化库-Seaborn
1 需求 概述 Seaborn 是一个基于 Python 的数据可视化库,它建立在 Matplotlib 之上。其主要目的是使数据可视化更加美观、方便和高效。它提供了高层次的接口和各种美观的默认主题,能够帮助用户快速创建出具有吸引力的统计图表,用于数据分析和…...
如何把Qt exe文件发送给其他人使用
如何把Qt exe文件发送给其他人使用 1、先把 Debug改成Release2、重新构建项目3、运行项目4、找到release文件夹5、新建文件夹,存放exe文件6、打开qt控制台串口7、下载各种文件8、压缩,发送压缩包给别人 1、先把 Debug改成Release 2、重新构建项目 3、运行…...
力扣103.二叉树的锯齿形层序遍历
题目描述 题目链接103. 二叉树的锯齿形层序遍历 给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 示例 1ÿ…...
MOH: MULTI-HEAD ATTENTION AS MIXTURE-OFHEAD ATTENTION
当前的问题 多头注意力使用多个头部可以提高模型的精度。然而,并不是所有的注意力头都具有同样的重要性。一些研究表明,许多注意力头可以被修剪而不影响准确性。 此外,在多头注意中,每个注意头并行操作,最终输出是所…...
Linux的文件系统
这里写目录标题 一.文件系统的基本组成索引节点目录项文件数据的存储扇区三个存储区域 二.虚拟文件系统文件系统分类进程文件表读写过程 三.文件的存储连续空间存放方式缺点 非连续空间存放方式链表方式隐式链表缺点显示链接 索引数据库缺陷索引的方式优点:多级索引…...
力扣78题详解:C语言实现子集问题
力扣78题详解:C语言实现子集问题 题目描述 给定一个不含重复元素的整数数组 nums,返回其所有可能的子集(幂集)。 说明:解集不能包含重复的子集,顺序无关。 示例 输入:nums [1,2,3] 输出&am…...
按行数据拆分到工作表-Excel易用宝
有这样一份工作表,现在要对工作表按指定行数进行拆分,如果你还在选择数据区域复制粘贴到每个工作表中,那这样的效率也太低了。 按指定行数拆分工作表,就用易用宝。 单击Excel易用宝,合并与拆分,拆分工作表…...
.net core 创建linux服务,并实现服务的自我更新
目录 创建服务创建另一个服务,用于执行更新操作给你的用户配置一些systemctl命令权限 创建服务 /etc/systemd/system下新建服务配置文件:yourapp.service,内容如下: [Unit] Descriptionyourapp Afternetwork.target[Service] Ty…...
无人机的起降装置:探索起飞和降落的秘密 !
一、起降系统的运行方式 起飞方式 垂直起飞:小型无人机通常采用垂直起飞方式,利用螺旋桨产生的升力直接从地面升起。这种方式适用于空间有限或需要快速起飞的场景。 跑道起飞:大型无人机或需要较长起飞距离的无人机,可能会采用…...
Apache Airflow 快速入门教程
Apache Airflow已经成为Python生态系统中管道编排的事实上的库。与类似的解决方案相反,由于它的简单性和可扩展性,它已经获得了普及。在本文中,我将尝试概述它的主要概念,并让您清楚地了解何时以及如何使用它。 Airflow应用场景 …...
数学题转excel;数学题库;数学试卷转excel;大风车excel
一、数学试卷转excel 有些需要刷题的朋友,需要将题库数学题转为excel格式,便于管理 前端时间帮一位朋友实现了数学题转excel,包括选择题、填空题、分析题 示例: 二、问题 数学题是最难以处理的试题,理由如下 1、有…...
【C++】类和对象(下)
目录 前言 一、再探构造函数 二、类型转换 三、static 成员 四、友元 五、内部类 六、匿名对象 七、对象拷贝时的编译器优化 总结 前言 本文主要内容:构造函数的再探--初始化列表、内置类型与自定义类型之间的转换、类的static成员、友元、内部类、匿名对…...
vue多页面应用集成时权限处理问题
在多页面应用(MPA)中,权限管理通常会涉及到每个页面的访问控制、身份验证、以及权限校验。以下是几种常见的权限处理方式: 1. 前端路由权限控制 原理:虽然是多页面应用,通常每个页面会独立加载和渲染&…...
输出保留3位小数的浮点数
输出保留3位小数的浮点数 C语言代码C代码Java代码Python代码 💐The Begin💐点点关注,收藏不迷路💐 读入一个单精度浮点数,保留3位小数输出这个浮点数。 输入 只有一行,一个单精度浮点数。 输出 也只有一…...
openssl的运用
一、概述 Opssl是一个用于TLS/SSL协议的工具包,也是一个通用密码库。 包含了国密sm2 sm3 sm4,包含了对称加密,非对称加密,单项散列,伪随机、签名,密码交换,证书等一些算法库。 为了深层次的学习…...
C++STL之vector(超详细)
CSTL之vector 1.vector基本介绍2.vector重要接口2.1.构造函数2.2.迭代器2.3.空间2.3.1.resize2.3.2.capacity 2.4.增删查找 3.迭代器失效4.迭代器分类 🌟🌟hello,各位读者大大们你们好呀🌟🌟 🚀Ὠ…...
RabbitMQ消息可靠性保证机制5--消息幂等性处理
RabbitMQ层面有实现“去重机制”来保证“恰好一次”吗?答案是没并没有,而且现在主流的消息中间件都没有实现。 一般解决重复消息的办法是:在消费端让我们消费消息操作具有幂等性。 幂等性问题并不是消息系统独有,而是࿰…...
24/12/1 算法笔记<强化学习> 创建Maze交互
我们今天制作一个栅格的游戏。 我们直接上代码教学。 1.载入库和查找相应的函数版本 import numpy as np import time import sysif sys.version_info.major 2:import Tkinter as tk else:import tkinter as tk 2.设置长宽和单元格大小 UNIT 40 MAZE_H 4 MAZE_W 4 3.初始…...
c++:模版 template
一、模版 1.格式: template <typname T> 2.实现 2.1自动推导 模板只对紧跟在后面的第一行代码有效,如果后面还想定义模板函数需要重新定义模板 #include <iostream> #include <string>template <typename T> void Print(T v…...
javascript切换类、删除类、修改类以及增加类
在JavaScript中,操作DOM元素的类(class)是一个常见的操作。以下是一些基本的方法来切换类、删除类、修改类以及增加内联样式: 切换类(Toggle Class) 切换类意味着如果类存在则移除它,如果不存…...
区块链学习笔记(2)--区块链的交易模型part1
模型基础 区块链的tx分为两种模型,分别是比特币为代表的UTXO(Unspent Transaction Output)模型,和以太坊为代表的Account模型。前者适用于货币记账,后者适用于链上应用。 UTXO模型 类似于现金的交易模型 一个tx包含…...
反射知识总结
狂神说 反射的功能: 类加载内存分析 类加载的时候,class对象就形成了。 类无论有多少对象,class对象只有一个。 获取类对象三种方式 反射,就是通过api获取一个类的类对象: 有三种方式: 方法一…...