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

10.24学习

1.const

在编程中, const  关键字通常用来定义一个常量。常量是程序运行期间其值不能被改变的变量。使用  const  可以提高代码的可读性和可靠性,因为它可以防止程序中意外修改这些值。

不同编程语言中  const  的用法可能略有不同,以下是一些常见的用法:

①C/C++:

在 C 语言中, const  关键字用于定义一个只读变量,其值在初始化后不能被改变。

在 C++ 中, const  可以用于变量、函数参数、成员函数等,表示它们不会修改对象的状态。

②JavaScript:

在 ES6(ECMAScript 2015)及以后的版本中, const  用于声明一个只读的常量。一旦一个常量被声明并初始化后,其值不能被重新赋值。

③Python:

Python 中没有  const  关键字,但通常约定使用全部大写的变量名来表示常量。

④Java:

Java 没有  const  关键字,但可以使用  final  关键字来声明一个不可变的变量。

⑤Swift:

Swift 中使用  let  来声明常量,一旦赋值后,其值不能被改变。

使用  const  的一个简单例子(以 JavaScript 为例):

const MAX_USERS = 100;

console.log(MAX_USERS); // 输出 100

// 下面的代码会抛出错误,因为 MAX_USERS 是一个常量,不能被重新赋值

// MAX_USERS = 200;

在不同的编程环境中, const  的具体行为和限制可能会有所不同,但基本概念是相似的。

 

 

2.printf()函数

 printf() 函数是C语言中用于格式化输出的标准库函数,它定义在 stdio.h 头文件中。以下是 printf() 函数的一些关键知识点:

①函数原型:

int printf(const char *format, ...);

 printf() 函数的第一个参数是一个格式字符串,后面的参数是可变数量的,根据格式字符串中的格式说明符来决定。

②格式字符串: 格式字符串包含了普通字符和格式说明符。普通字符直接输出,格式说明符用于指定后续参数的输出格式。

③格式说明符: 格式说明符以 % 开始,后面可以跟有:

标志字符(如 + 、 - 、 0 、 # 等)

宽度指定符(如 5d 表示至少5位宽)

精度指定符(如 .2f 表示小数点后两位)

长度修饰符(如 h 、 l 、 ll 等)

类型说明符(如 d 、 f 、 s 、 c 、 % 等)

④类型说明符:

 %d  或  %i :整数( int 类型)

 %u :无符号整数( unsigned int 类型)

 %f :浮点数( float 或 double 类型)

 %s :字符串( char 数组)

 %c :字符( char 类型)

 %x  或  %X :十六进制整数

 %p :指针(显示为十六进制)

 %% :输出百分号本身

⑤返回值:  printf() 函数返回成功输出的字符数。如果发生错误,它返回一个负数。

⑥可变参数:  printf() 函数使用C语言的可变参数机制,这允许函数接受不定数量的参数。

⑦使用例子:

printf("Integer: %d\n", 10);

printf("Float: %.2f\n", 3.14159);

printf("String: %s\n", "Hello, World!");

printf("Char: %c\n", 'A');

⑧格式化选项:

 %+d :显示正负号

 %05d :至少5位宽,不足补0

 %-5d :左对齐输出

 %5.2f :浮点数总宽度为5,小数点后两位

⑨错误处理:  printf() 函数不会对错误的格式字符串进行报错,如果格式字符串与提供的参数不匹配,可能会导致不可预测的行为。

⑩安全性:

避免格式化字符串的注入攻击,确保格式字符串是受控的,不被用户输入直接控制。

对于用户提供的数据,使用 snprintf() 等安全版本的函数,以避免缓冲区溢出。

⑪与 sprintf() 的区别:

 printf() 将格式化的数据输出到标准输出(通常是屏幕)。

 sprintf() 将格式化的数据存储到一个字符串中,而不是输出到屏幕。

 printf() 函数是C语言中非常基础且强大的工具,掌握它的使用对于进行有效的数据输出至关重要。

 

3.define

在C语言中, #define  是预处理指令,用于定义宏。以下是  #define  的一些关键知识点:

①预处理指令:  #define  是预处理器的指令之一,它告诉预处理器在编译之前将宏名替换为宏定义的内容。

②宏定义: 使用  #define  可以定义宏,宏可以是简单的值,也可以是更复杂的表达式或代码片段。

③无类型: 与  const  不同, #define  定义的宏没有数据类型,它只是简单的文本替换。

④替换时机: 宏的替换发生在编译之前,预处理器会将代码中所有宏的引用替换为宏定义的内容。

⑤没有作用域: 与变量不同,宏没有块作用域,一旦定义,它将在定义它的文件及其包含的文件中有效,直到遇到  #undef  指令。

⑥多次包含问题: 由于宏没有作用域限制,如果一个头文件被多次包含,宏定义可能会被多次定义,导致编译错误。这通常通过使用条件编译来解决,例如:

#ifndef HEADER_FILE_H

#define HEADER_FILE_H

// 头文件内容

#endif

⑦宏与常量: 尽管宏可以用于定义常量,但推荐使用  const  或  enum  来定义常量,因为它们有类型且作用域受控。

⑧宏运算符:  #define  可以与字符串化运算符  #  和标记粘贴运算符  ##  一起使用,以创建复杂的宏。

字符串化运算符  #  将宏参数转换为字符串。

标记粘贴运算符  ##  用于连接两个令牌。

⑨宏的参数: 宏可以接受参数,类似于函数,但它们在预处理阶段展开,而不是在运行时计算。

⑩宏的副作用: 由于宏的展开是简单的文本替换,可能会引入一些副作用,比如改变代码的语义或导致意外的编译错误。

⑪调试困难: 使用宏可能会使调试变得困难,因为宏的展开结果可能难以阅读,且在调试时看不到宏的值。

⑫宏与内联函数: 在C99标准中,可以使用  inline  关键字定义内联函数,这通常比宏更好,因为内联函数有类型检查,且编译器可以优化它们的调用。

⑬预定义的宏: 编译器会预定义一些宏,如  __LINE__ (当前行号)和  __FILE__ (当前文件名)。

⑭ #define  与  #undef : 使用  #undef  可以取消宏的定义,这在需要取消预定义宏或防止头文件多次包含时很有用。

使用  #define  时,应该谨慎以避免上述问题,并在可能的情况下考虑使用  const  或  enum  来定义常量。

 

相关文章:

10.24学习

1.const 在编程中, const 关键字通常用来定义一个常量。常量是程序运行期间其值不能被改变的变量。使用 const 可以提高代码的可读性和可靠性,因为它可以防止程序中意外修改这些值。 不同编程语言中 const 的用法可能略有不同,以下是一…...

社交媒体与客户服务:新时代的沟通桥梁

在数字化时代,社交媒体已成为人们日常生活中不可或缺的一部分,它不仅改变了人们的沟通方式,也深刻影响着企业的客户服务模式。从传统的电话、邮件到如今的社交媒体平台,客户服务的渠道正在经历一场前所未有的变革。社交媒体以其即…...

设置虚拟机与windows间的共享文件夹

在 VMware Workstation 或 VMware Fusion 中设置共享文件夹的具体步骤如下: 1. 启用共享文件夹 对于 VMware Workstation 打开 VMware Workstation: 启动 VMware Workstation,找到你要设置共享文件夹的虚拟机。 设置虚拟机: 选…...

微信小程序性能优化 ==== 合理使用 setData 纯数据字段

目录 1. setData 的流程 2. 数据通信 3. 使用建议 3.1 data 应只包括渲染相关的数据 3.2 控制 setData 的频率 3.3 选择合适的 setData 范围 3.4 setData 应只传发生变化的数据 3.5 控制后台态页面的 setData 纯数据字段 组件数据中的纯数据字段 组件属性中的纯数据…...

【加密系统】华企盾DSC服务台提示:请升级服务器,否则可能导致客户端退回到旧服务器的版本

华企盾DSC服务台提示:请升级服务器,否则可能导致客户端退回到旧服务器的版本 产生的原因:控制台版本比服务器高导致控制台出现报错 解决方案 方法:将控制台回退到原来的使用版本,在控制台负载均衡查看连接该服务器各个…...

直连南非,服务全球,司库直联再进一步

yonyou 在全球化经济背景下,中国企业不断加快“走出去”的步伐,寻求更广阔的发展空间。作为非洲大陆经济最发达的国家之一,南非以其丰富的自然资源、完善的金融体系和多元化的市场,成为中国企业海外投资与合作的热门目的地。 作为…...

【spring】从spring是如何避免并发下获取不完整的bean引发的思考 什么是双重检查锁 什么是java内存模型

本文将通过简述spring是如何避免并发下获取不完整的bean,延伸出双重检查锁、volatile、JMM的概念,将这些知识点都串联起来; 若发现错误,非常欢迎在评论区指出;csdn博主:孟秋与你 文章目录 双重检查锁(Doubl…...

【计算机网络一】网络学习前置知识

目录 网络中必备概念 1.什么是局域网与广域网? 2.什么是IP地址 3.什么是端口号 4.什么是协议 5.OSI七层模型 6.TCP/IP四层模型 网络中必备概念 本篇文章旨在分享一些计算机网络中的常见概念,对于初学者或者准备学习计算机网络的人会有帮助。 1.什么…...

nuScenes数据集使用的相机的外参和内参

因为需要用不同数据集测试对比效果,而一般的模型代码里实现的检测结果可视化都是使用open3d的Visualizer在点云上画的3d框,展示出来的可视化效果很差,可能是偷懒,没有实现将检测结果投影到各相机的图像上,所以检测效果…...

数据结构与算法:贪心算法与应用场景

目录 11.1 贪心算法的原理 11.2 经典贪心问题 11.3 贪心算法在图中的应用 11.4 贪心算法的优化与扩展 总结 数据结构与算法:贪心算法与应用场景 贪心算法是一种通过选择当前最佳解来构造整体最优解的算法策略。贪心算法在很多实际问题中都取得了良好的效果&am…...

音频编解码器音频文件格式

0 Preface/Foreword 1 音频编解码器 算法压缩越高,那么音频延迟越大,音频效果越好。 1.1 SBC SBC: sub-band coding,自带编码 A2DP强制规定使用的audio编解码器。 在音视频中,为了增加用户体验,规避视频和音频的不…...

FreeSWITCH JSON API

仅举几例: fs_cli -x json {"command" : "status", "data" : ""} fs_cli -x json {"command" : "sofia.status", "data" : ""} fs_cli -x json {"command" : "…...

学习docker第三弹------Docker镜像以及推送拉取镜像到阿里云公有仓库和私有仓库

docker目录 1 Docker镜像dockers镜像的进一步理解 2 Docker镜像commit操作实例案例内容是ubuntu安装vim 3 将本地镜像推送至阿里云4 将阿里云镜像下载到本地仓库5 后记 1 Docker镜像 镜像,是docker的三件套之一(镜像、容器、仓库)&#xff0…...

一文掌握Kubernates核心组件,构建智能容器管理集群

1.Kubernates简要概述 Kubernates(常称为K8s,因省略了“ubernate”中的8个字符)是Google开源的容器编排平台,专为简化和自动化应用服务的部署、扩展和管理而设计。它将应用与底层的服务器抽象开来,提供了自动化的机制…...

正则表达式快速入门

正则表达式是由一系列元字符(Meta-characters)组成的模式,用于定义搜索或替换文本的规则。元字符具有特殊含义,用于指定搜索模式的结构。以下是一些常用的正则表达式元字符及其功能: 字符匹配符 符号含义.匹配除 \r\…...

【小程序】-基础语法(二)

文章目录 知识回顾前言微信小程序开发一、模板语法2.1 数据绑定2.2 条件渲染2.3 列表渲染三、内置API3.1 网络请求3.2 界面交互3.3 本地存储3.4 API 特征3.5 相册/拍照3.6 小练习四、事件处理4.1 事件对象4.2 组件事件五、生命周期5.1 页面生命周期5.2 应用生命周期知识回顾 前…...

js 填充数组

let arr Array.from({ length: 10 }, (_, index) > index)console.log(arr) 人工智能学习网站 https://chat.xutongbao.top...

AI创作3款软件分享,助力内容创作者高效产出优质作品

为了增加创造力和作品质量,许多创作者开始利用人工智能辅助工具。这些工具不仅可以帮助我们迅速生成各种类型的内容,例如文章、绘画、视频广告等,还提供语法检查和优化建议等实用功能。本文将向大家推荐三款适用于Ai先行者、Tracup、Adoe Fir…...

A survey of loss functions for semantic segmentation——论文笔记

摘要 图像分割一直是一个活跃的研究领域,因为它有着广泛的应用范围,从自动疾病检测到自动驾驶汽车。过去五年中,各种论文提出了用于不同场景(如数据偏斜、稀疏分割等)的目标损失函数。在本文中,我们总结了…...

docker部署es与kibana Mac

1. 创建网络 神一样的链接,不用谢: 1.Docker命令链接:黑马整理的docker速成链接 2.jdk11链接:jdk11 3.神资源链接:别点,要脸 注意:es需要先安装jdk环境,推荐jdk11,否则…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...