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

C++中的表达式

文章目录

  • 算数操作符
  • 位操作符
    • bitset对象或整型值的使用
    • 将位移操作符用作IO
  • 赋值操作符
    • 赋值操作符的右结合性
    • 赋值操作具有低优先级
  • 自增和自减操作符
  • 条件操作符
  • sizeof操作符
  • 优先级
  • new和delete表达式
  • 类型转换
    • 何时发生隐式转换
    • 显示转换
    • 旧式强制类型转换

C++中的表达式由一个或多个操作数通过操作符组合而成。最简单的表达式仅包含一个字面值常量或变量。每个表达式都会产生一个结果。如果表达式中没有操作符,则其计算结果就是操作数本身。除了特殊的用法外,表达式的结果是 右值,可以读取该结果值,但是不允许对它进行赋值。

算数操作符

在这里插入图片描述
一元操作符优先级最高,其次时乘除,最后是加减。其中求模操作中值得注意得是:

-21 % -8; //-5,当两个数都是负数,求模(取余)操作的为负数或0
21 % -5; //1或-4,当两个操作数只有一个负数时,结果值得符号可依据分母或分子得符号而定,这两种操作得结果取决于机器

在这里插入图片描述

expr1 && expr2;
expr3 || expr4;

逻辑与和逻辑或总是先计算左操作数,只有在左操作数无法确定逻辑表达式得结果时,才会计算右操作数。这种求值策略被称为“短路求值”。

位操作符

在这里插入图片描述
位操作符操作的整数类型可以是有符号的也可以是无符号的。如果操作数为负数,则位操作符如何处理操作数的符号位依赖于机器。由于系统不能确保如何处理操作数的符号位,所以建议使用unsigned整型操作数。

bitset对象或整型值的使用

bitset<30> bitset_quizl;
unsigned long int_quizl = 0;//操作第27位
bitset_quizl.set(27); // set置为1,reset置为0
int_quizl |= 1UL << 27; // 置1
int_quizl &= ~(1UL << 27); // 置0

一般而言,标准库提供的bitset操作更加直接、更容易阅读和书写、正确的使用的可能性更高。而且bitset对象的大小不受unsigned的位数限制。

将位移操作符用作IO

输入输出标准库分别重载了位操作符>>和<<用于输入和输出。重载的操作符和内置版本有相同的优先级和结合性。优先级比算数操作符低,但比关系操作符、赋值操作符和条件操作符高。

cout << 42 + 10;
cout << (10 < 42);
cout << 10 < 42; // ❌

赋值操作符

赋值操作符的右结合性

int ival, jval; 
ival = jval = 0;

值得注意的是,操作对象必须具有相同的类型,或者具有可转换位同一类型的数据类型。

赋值操作具有低优先级

int i = get_value();
while(i != 42)
{// do something();i = get_value();
}
// 更简洁的写法
while((i = get_value()) != 42)
{// do something;
}

第二种写法更加简洁和清晰。值得注意的是在赋值操作中的圆括号是必须的,因为赋值操作符的优先级低于不等操作符。

自增和自减操作符

  • 后置操作符返回未加1的值
int i = 0, j;
j = ++i; // i = 1, j = 2;
j = i++; // i = 2, j = 1;

前置操作返回自增之后的结果,后置操作返回自增之前的结果。只有在必要时才使用后置操作。因为其在实现的过程中回产生一个临时对象,从而增加时间开销。

  • 在单个表达式中组合使用解引用和自增操作
vector<int>::iterator iter = ivec.begin();
while(iter != ivec.end())
{cout << *iter++ << endl;
}

自增操作的优先级高于解引用,因此先自增,在解引用。后置自增返回自增之前的值,因此解引用可以从0开始。

条件操作符

  • 嵌套条件操作符
int i = 10, j = 20, k = 40;
int max = i > j? i > k? i : k: j > k? j : k;
  • 在输出表达式中使用条件操作符
cout << (i < j ? i : j);
cout << i < j ? i : j; // ❌

条件表达式的优先级很低,想要不出错,最好用圆括号把表达式括起来。

sizeof操作符

sizeof表达式的结果是编译时常量,通常有以下三种语法形式:

  • sizeof(type name);
  • sizeof(expr);
  • sizeof expr;
// 以下三种得到都是Sales_item的大小
Sales_item item, *p;
sizeof(Sales_item);
sizeof item;
sizeof *p; 

优先级

在这里插入图片描述
在这里插入图片描述
上表按照优先级顺序列出了C++的全部操作符。该表不同优先级的操作符划分到不同段中,每段内各个操作符优先级相同,且都高于后面各段中的操作符。值得注意的后自增操作优先级比前自增操作的优先级更高

new和delete表达式

  • 初始化
\\ 动态创建类类型,回自动调用默认构造函数
string *s = new string;
\\ 内置类型,不会自动初始化
int *pi = new int;
\\ 可通过在类型名后加(),进行值初始化
int *pi = new int();
  • new分配内存失败
    分配失败系统将抛出名为bad_alloc的异常。
  • 在delete之后,重设指针的值
delete p;
p = nullptr;

在delete动态分配的之后,p变成没有意义。在很多机器之上,尽管p没有意义,但仍存放了它之前所指向地址的值,然后p所指向的内存已经被释放,因此p不在有效。
删除指针之后,该指针变成垂悬指针。为了防止出错,在删除指针之后,立即将其置为0。

类型转换

由编译器自动进行类型转换称之为隐式类型转换。

何时发生隐式转换

在下列情况下,将发生隐式类型转换:

  • 混合类型的表达式中,其操作数转化为相同的类型
int ival;
double dval;
ival >= dval; // ival转化为double,一般向精度更大的类型进行转换
  • 用作条件表达式被转换为bool类型
int ival;
if(ival)
while()
&&, ||, !, ?:等等
  • 用一表达式初始化或赋值某个变量,该表达式结果转化为该变量类型。

显示转换

显示转换也称为强制类型转换(cast),包括static_cast、dynamic_cast、const_cast和reinterpret_cast。

  • 何时需要强制类型转换
double dval;
int ival;
ival *= dval; // ival * dval,ival先转double,ival = ival * dval,赋值操作结果转int
ival *= static_cast<int>(dval); // 有效减少隐式转换的次数
  • 使用场景
// dynamic_cast,支持运行时识别指针或引用所指向的对象
// const_cast,添加移除const属性,const_cast<new_type>(expression)
// static_cast,编译器隐式转换的任何类型都可以由static_cast显示完成
// reinterpret_cast,通常为操作数的位模式提供低层次的重新编译。本质上依赖于机器。
//为了安全的使用,要求程序员完全理解所设计的类型,以及编译器实现强制类型转换的细节。
// 转换后的类型通常与原类型完全不相关,用于底层操作,转换为完全不相关的类型,如指针与整数之间的转换。
//这种转换是危险的,可能会导致未定义行为,特别是在内存布局不一致的情况下
int *ip;
char *pc = reinterpret_cast<char*>(ip); // 程序员必须永远记着pc所指向的真实对象是int型,而非字符数组。任何假设pc是字符指针的应用,可能带来未知的错误。

旧式强制类型转换

在引入相知类型转换操作符之前,显示强制类型转换用圆括号实现。

// 以下两种写法都可
char *pc = (char*) ip;
char *pc = char*(ip);

旧式强制类型转换具有和static_cast、const_cast以及reinterpret_cast一样的行为。在合法使用前两者的场景中,提供了与各自对应命名强制转换一样的功能。如果这两种转换均不合法,则执行reinterpret_cast的功能。
支持旧式强制类型转换是为了对保持老程序的兼容性,一般建议使用命名强制转换。

相关文章:

C++中的表达式

文章目录 算数操作符位操作符bitset对象或整型值的使用将位移操作符用作IO 赋值操作符赋值操作符的右结合性赋值操作具有低优先级 自增和自减操作符条件操作符sizeof操作符优先级new和delete表达式类型转换何时发生隐式转换显示转换旧式强制类型转换 C中的表达式由一个或多个操…...

直流无刷电机控制(FOC):电流模式

目录 概述 1 系统框架结构 1.1 硬件模块介绍 1.2 硬件实物图 1.3 引脚接口定义 2 代码实现 2.1 软件架构 2.2 电流检测函数 3 电流环功能实现 3.1 代码实现 3.2 测试代码实现 4 测试 概述 本文主要介绍基于DengFOC的库函数&#xff0c;实现直流无刷电机控制&#x…...

LabVIEW水轮发电机组振动摆度故障诊断

本文介绍了基于LabVIEW的水轮发电机组振动摆度故障诊断系统的设计与实施过程。系统在通过高效的故障诊断功能&#xff0c;实现水轮发电机组的振动、温度等关键指标的实时监控与智能分析&#xff0c;从而提高电力设备的可靠性和安全性。 ​ 项目背景 随着电力行业对设备稳定性…...

《暗时间》读书笔记

前言 2003年&#xff0c;刘未鹏在杂志上发表了自己的第一篇文章&#xff0c;并开始写博客。最初的博客较短&#xff0c;也较琐碎&#xff0c;并夹杂着一些翻译的文章。后来渐渐开始有了一些自己的心得和看法。在这8年里&#xff0c;作者平均每个月写1篇博客或更少&#xff0c;…...

【SQL】COUNT()函数 用法详解

COUNT()函数 COUNT函数用法&#xff1a;COUNT ( [ALL | DISTINCT] column | expression | *) ALL关键字指示统计所有值&#xff0c;而DISTINCT关键字强制函数仅对不同的值进行操作。 默认情况下&#xff0c;使用ALL选项。条件表达式 COUNT()函数中条件表达式加 OR null。例如…...

Kafka优势剖析-幂等性和事务

目录 1. 幂等性&#xff08;Idempotence&#xff09; 1.1 什么是幂等性&#xff1f; 1.2 幂等性的实现 1.2.1 生产者 ID 和序列号 1.2.2 重复消息检测 1.2.3 幂等性的优势 1.3 幂等性的配置 2. 事务支持&#xff08;Transactions&#xff09; 2.1 什么是事务支持&…...

内网穿透的应用-Ubuntu本地Docker部署Leantime项目管理工具随时随地在线管理项目

文章目录 前言1.关于Leantime2.本地部署Leantime3.Leantime简单实用4.安装内网穿透5.配置Leantime公网地址6. 配置固定公网地址 前言 本文主要介绍如何在本地Linux系统使用Docker部署Leantime&#xff0c;并结合cpolar内网穿透工具轻松实现随时随地查看浏览器页面&#xff0c;…...

Python 中的错误处理与调试技巧

&#x1f496; 欢迎来到我的博客&#xff01; 非常高兴能在这里与您相遇。在这里&#xff0c;您不仅能获得有趣的技术分享&#xff0c;还能感受到轻松愉快的氛围。无论您是编程新手&#xff0c;还是资深开发者&#xff0c;都能在这里找到属于您的知识宝藏&#xff0c;学习和成长…...

使用 NestJS 构建高效且模块化的 Node.js 应用程序,从安装到第一个 API 端点:一步一步指南

一、安装 NestJS 要开始构建一个基于 NestJS 的应用&#xff0c;首先需要安装一系列依赖包。以下是必要的安装命令&#xff1a; npm i --save nestjs/core nestjs/common rxjs reflect-metadata nestjs/platform-express npm install -g ts-node包名介绍nestjs/coreNestJS 框…...

Linux下Qt程序设置system服务开机自启

1、执行 > /home/firefly/.config/lxsession/Lubuntu/autostart2、执行 crontab -e修改 10 * * * * /bin/bash /opt/restart_bluetoothdemo.sh &> /dev/null为 10 * * * * /bin/systemctl restart ble-gw3、执行 vim /etc/systemd/system/ble-gw.service复制下面…...

golang OpcUaClient

实现功能 package mainimport ("fmt""log""opcuaclient/util/plugin/client/opcclient""os""os/signal""syscall" )func main() {OPCUATest()// 监听操作系统信号&#xff0c;阻塞直到接收到信号quit : make(chan…...

福建双色荷花提取颜色

提取指定颜色 HSV双色荷花代码验证 参照《OpenCV图像处理技术》 HSV 要用HSV的色调、饱和度和亮度来提取指定颜色。 双色荷花 农林大学金山校区观音湖 代码 import cv2 import numpy as npimgcv2.imread("./sucai6/hua.jpg") cv2.imshow("SRC",img) h…...

记录一次面试中被问到的问题 (HR面)

文章目录 一、你对公司的了解多少二、为什么对这个岗位感兴趣三、不能说的离职原因四、离职原因高情商回复五、你的核心优势是什么六、你认为你比其他面试候选人的优势是什么七、不要提及情感 一、你对公司的了解多少 准备要点&#xff1a; 在面试前&#xff0c;对公司进行充分…...

解决sublime编译无法输入问题

在使用sublime编译简单的c语言的时候,发现编译过程中,带有scanf的程序,无法正确的输入。 需要提前配置好gcc 和g++ 一、新增配置 新建编译系统文件:C.sublime-build 具体步骤:菜单中选择Tools——Build System——New Build System——保存文件名C.sublime-build ,填写以…...

基于JAVA+SSM的小区物业管理系统

基于JAVASSM的小区物业管理系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末附源码下载链接&#x1f345; 哈喽兄弟们&a…...

List-顺序表--2

目录 1、ArrayList 2、ArrayList构造方法 3、ArrayList常见方法 4、ArrayList的遍历 5、ArrayList的扩容机制 6、ArrayList的具体使用 6.1、杨辉三角 6.2、简单的洗牌算法 1、ArrayList 在集合框架中&#xff0c;ArrayList 是一个普通的类&#xff0c;实现了 List 接口…...

Rabbitmq 具体怎么做到削峰的,是丢弃部分消费吗,有的实际场景是不允许丢弃

在高并发场景中&#xff0c;RabbitMQ 可以通过几种策略来实现 削峰&#xff08;缓解瞬时负载激增&#xff09;&#xff0c;而这些策略并不一定需要丢弃消息。在一些业务场景下&#xff0c;丢弃消息显然是不允许的&#xff0c;因此在这种情况下&#xff0c;可以使用以下方法来确…...

Apache JMeter 压力测试使用说明

文章目录 一、 安装步骤步骤一 下载相关的包步骤二 安装 Jmeter步骤三 设置 Jmeter 工具语言类型为中文 二、使用工具2.1 创建测试任务步骤一 创建线程组步骤二 创建 HTTP 请求 2.2 配置 HTTP 默认参数添加 HTTP消息头管理器HTTP请求默认值 2.3 添加 查看结果监听器2.4 查看结果…...

STM32 拓展 RTC案例1:使用闹钟唤醒待机模式 (HAL库)

需求描述 执行完毕正常代码之后&#xff0c;让MCU进入待机模式&#xff0c;设置闹钟&#xff0c;自动让MCU从待机模式中被唤醒。可以用led点亮熄灭显示是否唤醒。 应用场景&#xff1a;比如设计一个野外温度自动采集的设备&#xff0c;规定每小时采集一次温度&#xff0c;就可…...

Perturbed-Attention Guidance(PAG) 笔记

Self-Rectifying Diffusion Sampling with Perturbed-Attention Guidance Github 摘要 近期研究表明&#xff0c;扩散模型能够生成高质量样本&#xff0c;但其质量在很大程度上依赖于采样引导技术&#xff0c;如分类器引导&#xff08;CG&#xff09;和无分类器引导&#xff…...

C#语言的数据库编程

C#语言的数据库编程 在现代软件开发中&#xff0c;数据库是不可或缺的一部分。无论是企业级应用还是个人项目&#xff0c;数据的存储与管理都是程序的核心功能之一。C#作为一种强类型、面向对象的编程语言&#xff0c;广泛应用于Windows平台的开发&#xff0c;尤其是在构建与数…...

FPGA技术的深度理解

目录 引言 FPGA的基本原理 结构组成 工作原理 FPGA的设计流程 设计阶段 编程阶段 实现阶段 FPGA的应用领域 FPGA编程技巧和示例代码 编程技巧 示例代码 结论 引言 FPGA&#xff08;现场可编程门阵列&#xff09;是一种可编程的集成电路&#xff0c;它允许用户根据…...

JavaScript语言的学习路线

JavaScript语言的学习路线 引言 JavaScript是一门广泛使用的编程语言&#xff0c;最初为网页添加互动效果而设计。随着技术的发展&#xff0c;JavaScript的应用领域已经从网页开发扩展到了移动应用、桌面应用、服务器端开发等多个领域。掌握JavaScript不仅能够帮助你成为一名…...

关于Mac中的shell

1 MacOS中的shell 介绍&#xff1a; 在 macOS 系统中&#xff0c;Shell 是命令行与系统交互的工具&#xff0c;用于执行命令、运行脚本和管理系统。macOS 提供了多种 Shell&#xff0c;主要包括 bash 和 zsh。在 macOS Catalina&#xff08;10.15&#xff09;之前&#xff0c…...

设计模式学习笔记——结构型模式

文章目录 适配器模式 Adapter适用场景UML 桥接模式 Bridge适用场景UML 组合模式 Composite装饰模式 Decorator外观模式 Facade享元模式 Flyweight代理模式 Proxy 适配器模式 Adapter 适用场景 希望使用某个类&#xff0c; 但是其接口与其他代码不兼容时&#xff0c; 可以使用…...

MySQL之企业面试题:InnoDB存储引擎组成部分、作用

InnoDB存储引擎主要由以下四个组成部分&#xff1a; 1. Buffer Pool&#xff08;缓冲池&#xff09; 原理&#xff1a; 缓冲池是InnoDB存储引擎的核心组件之一&#xff0c;用于缓存表的数据页和索引页&#xff0c;减少对磁盘I/O的访问次数。缓冲池中的数据页在事务提交时会根…...

安装MySQL的五种方法(Linux系统和Windows系统)

一.在Linux系统中安装MySQL 第一种方法:在线YUM仓库 首先打开MySQL官网首页 www.mysql.com 找到【DOWNLOADS】选项&#xff0c;点击 下拉&#xff0c;找到 【MySQL Community(GPL) Downloads】 在社区版下载页面中&#xff0c;【 MySQL Yum Repository 】链接为在线仓库安装…...

使用 C++ 实现神经网络:从基础到高级优化

引言 在现代机器学习中&#xff0c;神经网络已经成为最重要的工具之一。虽然 Python 提供了诸如 TensorFlow、PyTorch 等强大的机器学习库&#xff0c;但如果你想深入理解神经网络的实现原理&#xff0c;或者出于某些性能、资源限制的考虑&#xff0c;使用 C 来实现神经网络会是…...

scala代码打包配置(maven)

目录 mavenpom.xml打包配置项&#xff08;非完整版&#xff0c;仅含打包的内容< build>&#xff09;pom.xml完整示例&#xff08;需要修改参数&#xff09;效果说明 maven 最主要的方式还是maven进行打包&#xff0c;也好进行配置项的管理 以下为pom文件&#xff08;不要…...

[免费]微信小程序(高校就业)招聘系统(Springboot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序(高校就业)招聘系统(Springboot后端Vue管理端)&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序(高校就业)招聘系统(Springboot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项目介绍…...

cursor vip

https://cursor.jeter.eu.org?pf7f4f3fab0af4119bece19ff4a4360c3 可以直接复制命令使用git bash执行即可 命令&#xff1a; bash <(curl -Lk https://gitee.com/kingparks/cursor-vip/releases/download/latest/ic.sh) f7f4f3fab0af4119bece19ff4a4360c3 等待执行完成后…...

web作业

作业一 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>Document</title> </head&g…...

Docker compose 使用 --force-recreate --no-recreate 控制重启容器时的行为【后续】

前情&#xff1a;上一篇实际是让AI工具帮我总结了一下讨论的内容&#xff0c;这里把讨论的过程贴出来&#xff0c;这个讨论是为解决实际问题 前文https://blog.csdn.net/wgdzg/article/details/145039446 问题说明&#xff1a; 我使用 docker compose 管理我的容器&#xff0…...

Virgo:增强慢思考推理能力的多模态大语言模型

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

城市生命线安全综合监管平台

【落地产品&#xff0c;有需要可留言联系&#xff0c;支持项目合作或源码合作】 一、建设背景 以关于城市安全的重要论述为建设纲要&#xff0c;聚焦城市安全重点领域&#xff0c;围绕燃气爆炸、城市内涝、地下管线交互风险、第三方施工破坏、供水爆管、桥梁坍塌、道路塌陷七…...

Linux:进程概念、进程状态、进程切换、进程调度、命令行参数、环境变量,进程地址空间

hello&#xff0c;各位小伙伴&#xff0c;本篇文章跟大家一起学习《Linux&#xff1a;进程》&#xff0c;感谢大家对我上一篇的支持&#xff0c;如有什么问题&#xff0c;还请多多指教 &#xff01; 如果本篇文章对你有帮助&#xff0c;还请各位点点赞&#xff01;&#xff01;…...

Python教程丨Python环境搭建 (含IDE安装)——保姆级教程!

工欲善其事&#xff0c;必先利其器。 学习Python的第一步不要再加收藏夹了&#xff01;提高执行力&#xff0c;先给自己装好Python。 1. Python 下载 1.1. 下载安装包 既然要下载Python&#xff0c;我们直接进入python官网下载即可 Python 官网&#xff1a;Welcome to Pyt…...

【ASP.NET学习】ASP.NET MVC基本编程

文章目录 ASP.NET MVCMVC 编程模式ASP.NET MVC - Internet 应用程序创建MVC web应用程序应用程序信息应用程序文件配置文件 用新建的ASP.NET MVC程序做一个简单计算器1. **修改视图文件**2. **修改控制器文件** 用新建的ASP.NET MVC程序做一个复杂计算器1.创建模型&#xff08;…...

在线工具箱源码优化版

在线工具箱 前言效果图部分源码源码下载部署教程下期更新 前言 来自缤纷彩虹天地优化后的我爱工具网源码&#xff0c;百度基本全站收录&#xff0c;更能基本都比较全&#xff0c;个人使用或是建站都不错&#xff0c;挑过很多工具箱&#xff0c;这个比较简洁&#xff0c;非常实…...

网站自动签到

我研究生生涯面临两个问题&#xff0c;一是写毕业论文&#xff0c;二是找工作&#xff0c;这两者又有很大的冲突。怎么解决这两个冲突呢&#xff1f;把python学好是一个路子&#xff0c;因此从今天我要开一个专栏就是学python 其实我的本意不是网站签到&#xff0c;我喜欢在起点…...

python学opencv|读取图像(二十七)使用time()绘制弹球动画

【1】引言 前序已经学习了pythonopencv画线段、圆形、矩形、多边形和文字的相关操作&#xff0c;具体文章链接包括且不限于&#xff1a; python学opencv|读取图像&#xff08;十八&#xff09;使用cv2.line创造线段_cv2. 画线段-CSDN博客 python学opencv|读取图像&#xff0…...

物联网智能项目简述

物联网智能项目 一、物联网智能项目的定义 物联网智能项目是指基于物联网技术&#xff08;IoT&#xff09;&#xff0c;结合人工智能&#xff08;AI&#xff09;、大数据、云计算等先进技术&#xff0c;开发出的具有智能化、自动化、远程监控等功能的项目。物联网&#xff08…...

el-table 合并单元格

参考文章&#xff1a;vue3.0 el-table 动态合并单元格 - flyComeOn - 博客园 <el-table :data"tableData" border empty-text"暂无数据" :header-cell-style"{ background: #f5f7fa }" class"parent-table" :span-method"obj…...

SQL语言的函数实现

SQL语言的函数实现 引言 随着大数据时代的到来&#xff0c;数据的存储和管理变得越来越复杂。SQL&#xff08;结构化查询语言&#xff09;作为关系数据库的标准语言&#xff0c;其重要性不言而喻。在SQL语言中&#xff0c;函数是一个重要的组成部分&#xff0c;可以有效地帮助…...

细说STM32F407单片机以DMA方式读写外部SRAM的方法

目录 一、工程配置 1、时钟、DEBUG、GPIO、CodeGenerator 2、USART3 3、NVIC 4、 FSMC 5、DMA 2 &#xff08;1&#xff09;创建MemToMem类型DMA流 &#xff08;2&#xff09;开启DMA流的中断 二、软件设计 1、KEYLED 2、fsmc.h、fsmc.c、dma.h、dma.c 3、main.h…...

Vue 3前端与Python(Django)后端接口简单示例

项目 后端&#xff08;Django&#xff09;前端&#xff08;Vue 3&#xff09; 后端&#xff08;Django&#xff09; 创建Django项目和应用&#xff1a; 确保你已经安装了Django。如果没有安装&#xff0c;可以使用以下命令安装&#xff1a; pip install django创建一个新的Dja…...

前端多语言

前端多语言目前常用i18n实现 一、react 1.安装依赖 npm install react-i18next i18next --save2.创建配置文件 src/i18n config.ts&#xff1a;对 i18n 进行初始化操作及插件配置 en.json&#xff1a;英文语言配置文件 zh.json&#xff1a;中文语言配置文件 config.ts im…...

单片机-直流电机实验

1、ULN2003芯片介绍 ULN2003&#xff0c; 该芯片是一个单片高电压、高电流的达林顿晶体管阵列集成电路。不仅可以用来 驱动直流电机&#xff0c;还可用来驱动五线四相步进电机。支持驱动大功率电器 因为 ULN2003 的输出是集电极开路&#xff0c;ULN2003 要输出高电平&#xff0…...

【Word_笔记】Word的修订模式内容改为颜色标记

需求如下&#xff1a;请把修改后的部分直接在原文标出来&#xff0c;不要采用修订模式 步骤1&#xff1a;打开需要转换的word后&#xff0c;同时按住alt和F11 进入&#xff08;Microsoft Visual Basic for Appliations&#xff09; 步骤2&#xff1a;插入 ---- 模块 步骤3&…...

计算机网络之---子网划分与IP地址

子网划分与IP地址的关系 在计算机网络中&#xff0c;子网划分&#xff08;Subnetworking&#xff09;是将一个网络划分为多个子网络的过程。通过子网划分&#xff0c;可以有效地管理和利用IP地址空间&#xff0c;提高网络的性能、安全性和管理效率。 子网划分的基本目的是通过…...