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

9 C 语言变量详解:声明与定于、初始化与赋值、printf 输出与 scanf 输入、关键字、标识符命名规范

1 初识变量

1.1 变量的意义

        在程序设计中,变量是程序中不可或缺的组成单位,最基本的存储单元。它如同现实生活中的容器,用于临时或长期保存各种类型的数据,为程序提供灵活的数据操作能力。

        以选购手机为例,手机的各项配置(如颜色、内存、版本等)均可通过变量进行抽象表示。

  • 颜色:可用字符串变量存储(例如 "瑞红"、"玄黑")。
  • 内存:可用数值或字符串变量表示(例如 "16GB+512GB"、"16GB+1TB")。

        通过变量,程序能够动态地处理和管理这些配置信息,实现更高效的逻辑运算和数据处理。

1.2 变量的本质

        变量是内存中的一个命名存储单元,用于存储程序运行期间可以改变的数据

        每个变量都具有以下三个核心要素:

  1. 数据类型定义变量可以存储的数据的种类(如整数、浮点数、字符等)以及该数据在内存中占用的空间大小
  2. 变量名用于标识和引用该存储单元,通过它可访问或修改存储的值
  3. 存储的值变量当前所保存的数据内容,可以在符合其数据类型的范围内进行变更

        变量名在 C 语言中充当了内存中特定存储单元的标识符。每个变量在内存中都有一个唯一的地址,而变量名就是对这个地址的抽象表示,使得程序员可以通过变量名来访问和操作该地址上的数据。通过变量名,程序可以方便地访问或修改存储在相应内存单元中的值。这是程序进行数据处理和计算的基础。例如,通过变量名可以对变量进行赋值、读取、运算等操作。

1.3 变量的声明与赋值

1.3.1 声明与赋值规则

  1. 先声明后使用:变量必须先声明后才能在程序中使用
  2. 声明与赋值方式:变量可以在声明后单独赋值;也可以在声明时直接初始化赋值
  3. 多变量声明:支持同时声明多个同类型变量,并可选择性地对其进行初始化赋值
  4. 值可变性:变量的值可以在其数据类型允许的范围内动态改变
  5. 唯一性约束:在同一作用域内,变量名必须唯一,禁止重复声明同名变量

1.3.2 声明、定义、初始化与赋值的关系

        在编程学习中,我们经常会遇到 “声明变量”、“定义变量”、“初始化变量” 和 “赋值变量” 这几个专业术语。为什么要理清楚这几个的关系呢?因为在有些教材和课本中,这些术语虽然频繁出现,但它们的具体含义和区别却可能并不十分清晰。为了准确理解和运用这些概念,我们需要弄清楚这些专业术语到底表示什么意思。

  • 声明变量:声明变量是指告诉编译器变量的类型和名称,但不为其分配具体的值。例如,int a; 只是声明了一个整型变量 a,此时 a 还没有被赋予任何具体的值。

  • 定义变量:在 C 语言中,声明变量通常也意味着定义变量,即为变量分配内存空间。因此,int a; 既可以看作是声明,也可以看作是定义。但在某些上下文中(如函数原型中),声明变量可能只是声明而不定义,即只告诉编译器变量的类型和名称,而不为其分配内存空间。

  • 初始化变量:初始化变量是指在声明变量的同时为其分配一个初始值。例如,int a = 5; 既声明了变量 a,又为其初始化了值 5。这样,在变量 a 被声明的同时,它就已经有了一个具体的值。

  • 赋值变量:赋值变量是指在变量已经声明并定义后,为其分配一个新的值。例如,a = 10; 是在变量 a 已经存在的情况下,为其赋予新的值 10。此时,变量 a 的值从原来的 5 变成了 10。

        理解这些概念的区别和联系,有助于我们更好地掌握变量的使用和管理,避免在编程过程中出现混淆和错误。

1.3.3 案例演示

        首先,我们创建一个名为 “Chapter2_variable” 的文件夹,并用 VS Code 打开。接着,在该文件夹中新建一个名为 “var01.c” 的源文件,具体操作如下:

        然后编写如下代码:

#include <stdio.h>int main()
{// 1. 先声明后使用:变量必须先声明后才能在程序中使用。int a; // 声明变量 a,但未初始化// 2. 声明与赋值方式:// 2.1 变量可以在声明后单独赋值。a = 10; // 在声明后单独给变量 a 赋值// 2.2 变量也可以在声明时直接初始化赋值。int b = 20; // 在声明时直接给变量 b 初始化赋值// 3. 多变量声明:支持同时声明多个同类型变量,并可选择性地对其进行初始化赋值。int c = 30, d, e = 40; // 同时声明多个整型变量,其中 c 和 e 被初始化,d 未初始化d = 50;                // 单独给变量 d 赋值// 4. 值可变性:变量的值可以在其数据类型允许的范围内动态改变。a = a + 5;  // 改变变量 a 的值b = b - 10; // 改变变量 b 的值// 5. 唯一性约束:在同一作用域内,变量名必须唯一,禁止重复声明同名变量。// 下面的代码会导致编译错误,因为变量 b 已经在前面声明过// int b = 999; // 错误:重复声明变量 b// 变量未定义就使用:会导致编译错误// f = 60;return 0;
}

        如果将上面示例代码中的 25 行和 28 行代码注释取消掉,编译器会提示错误,如下所示:

        由此可见,在使用变量时,遵循声明与赋值规则是个不错的习惯,能让我们的编程之路更加平坦。 


2 printf 输出变量

2.1 使用方法

        printf 的标准含义是格式化输出文本,其名称来源于 "print formatted"(格式化打印)的缩写。printf 的标准语法规则如下:

  • 格式化字符串:用双引号括起来的一个字符串,里面包括格式占位符和普通字符。普通字符会直接输出,而格式占位符则用于指定输出数据的格式。

  • 格式占位符(也叫格式声明符):由 “%” 和格式字符组成,作用是将输出的数据转换为指定的格式后输出。例如,%d 表示整数。更多的格式占位符在后续的学习中会进行讲解。

  • 输出列表:是程序需要输出的一些数据,可以是常量、变量或表达式,与格式占位符一一对应

2.2 案例演示

        新建文件 “printf01.c”,然后编写如下代码:

#include <stdio.h>int main()
{// 1. 先声明后使用:变量必须先声明后才能在程序中使用。int a; // 声明变量 a,但未初始化// 2. 声明与赋值方式:// 2.1 变量可以在声明后单独赋值。a = 10; // 在声明后单独给变量 a 赋值printf("变量 a 在单独赋值后的值: %d\n", a);// 2.2 变量也可以在声明时直接初始化赋值。int b = 20; // 在声明时直接给变量 b 初始化赋值printf("变量 b 在初始化后的值: %d\n", b);// 3. 多变量声明:支持同时声明多个同类型变量,并可选择性地对其进行初始化赋值。int c = 30, d, e = 40; // 同时声明多个整型变量,其中 c 和 e 被初始化,d 未初始化d = 50;                // 单独给变量 d 赋值printf("变量 c: %d, 变量 d: %d, 变量 e: %d\n", c, d, e);// 4. 值可变性:变量的值可以在其数据类型允许的范围内动态改变。a = a + 5;  // 改变变量 a 的值b = b - 10; // 改变变量 b 的值printf("变量 a 在修改后(+5)的值: %d\n", a);printf("变量 b 在修改后(-10)的值: %d\n", b);// 5. 唯一性约束:在同一作用域内,变量名必须唯一,禁止重复声明同名变量。// 下面的代码会导致编译错误,因为变量 b 已经在前面声明过// int b = 999; // 错误:重复声明变量 b// 解决方案:我们可以使用不同的变量名int f = 999; // 声明新的变量 fprintf("变量 f: %d\n", f);return 0;
}

        程序在 VS code 中的运行结果如下所示:


3 scanf 输入变量

3.1 使用方法

        scanf 主要用于从标准输入(stdin,通常是键盘)读取数据并将其存储到指定的变量中。这些变量需要提前声明。scanf 函数位于头文件 <stdio.h> 中。

        与 printf 相同,scanf 也可以通过不同的格式占位符为不同类型的变量获取值。例如,%d 用于读取整数,%f 用于读取浮点数等。更多的格式占位符在后续的学习中会进行讲解。

        需要注意的是,在 scanf 中,变量名前面需要添加 & 符号,该符号称为取地址符。这是因为 scanf 需要知道变量的内存地址,以便将输入的数据存储到该地址中。后续会在指针部分详细讲解取地址符的用法。

3.2 案例演示

        新建文件 “scanf01.c”,然后编写如下代码:

#include <stdio.h>int main()
{// 声明一个整数变量 numint num;// 提示用户输入一个数字printf("请输入一个数字:");// 从标准输入读取一个整数,并将其存储到变量 num 中scanf("%d", &num);// 输出用户输入的数字printf("您输入的数字是:%d\n", num);// 声明三个整数变量 num1, num2, num3int num1, num2, num3;// 提示用户输入三个数字printf("请输入三个数字(使用空格分隔):");// 从标准输入读取三个整数,使用空格分隔,并将它们分别存储到变量 num1, num2, num3 中scanf("%d %d %d", &num1, &num2, &num3);// 输出用户输入的三个数字printf("数字是:%d, %d, %d\n", num1, num2, num3);// 返回 0,表示程序正常结束return 0;
}

        程序在 VS code 中的运行结果如下所示:


4 关键字

        关键字是 C 语言中具有特殊含义的保留单词,不能用作标识符(如变量名、函数名等)。随着 C 语言标准的不断发展,关键字的数量也在逐渐增加。

        ANSI C 有 32 个关键字,C99 标准增加了 5 个关键字,C11 标准增加了 7 个关键字。如下所示:

类别ANSI C 关键字C99 新增关键字C11 新增关键字
控制语句关键字break, case, continue, default, do, else, for, goto, if, return, switch, while--
数据类型关键字char, enum, double, long, float, int, short, signed, struct, unsigned, union, void--
存储类型关键字auto, extern, register, static--
其他关键字const, sizeof, typedef, volatileinline, restrict, _Bool, _Complex, _Imaginary_Alignas, _Alignof, _Atomic, _Static_assert, _Noreturn, _Thread_local, _Generic
  • 控制语句关键字:用于控制程序的流程,如条件判断、循环、跳转等。
  • 数据类型关键字:用于定义变量的数据类型,如整型、浮点型、字符型等。
  • 存储类型关键字:用于定义变量的存储类型,如自动存储、静态存储、外部链接等。
  • 其他关键字:包括常量定义、类型别名、变量大小获取、易变变量声明等,以及 C99 和 C11 标准新增的关键字,用于支持新的语言特性和功能。

5 标识符

        在 C 语言中,变量、函数、数组名、结构体等要素命名时使用的字符序列,称为标识符。标识符是程序中用于唯一标识这些实体的名称

5.1 强制命名规范

        为了确保代码的可读性和可维护性,标识符的命名需要遵循以下强制规范:

  1. 组成字符:标识符只能由小写或大写英文字母(a-z, A-Z)、数字(0-9)或下划线(_)组成
  2. 开头字符:标识符不能以数字开头
  3. 关键字限制:标识符不能是 C 语言的关键字
  4. 大小写敏感:标识符严格区分大小写字母。例如,Hello 和 hello 是两个不同的标识符。
  5. 长度限制:标识符具有长度限制,不同编译器和平台可能会有所不同,一般限制在 63 个字符内。

合法标识符举例:

  • a
  • BOOK_sun
  • MAX_SIZE
  • Mouse
  • student23
  • Football
  • FOOTBALL
  • max
  • _add
  • num_1
  • sum_of_numbers

非法标识符举例:

  • $zj:包含非法字符 $
  • 3sum:以数字开头。
  • ab#cd:包含非法字符 #
  • 23student:以数字开头。
  • Foot-baii:包含非法字符 -
  • s.com:包含非法字符 .
  • b&c:包含非法字符 
  • j**p:包含非法字符 *
  • book-1:包含非法字符 -
  • tax rate:包含空格。
  • don't:包含单引号 '

5.2 建议命名规范

        除了强制规范外,为了提高代码的可读性和可维护性,以下是一些建议的标识符命名规范:

  1. 使用有意义的单词:为了提高阅读性,建议使用有意义的单词作为标识符,使代码见名知意。例如,sum、name、max、year 等。
  2. 使用下划线连接多个单词:对于由多个单词组成的标识符,建议使用下划线 _ 连接各个单词,以提高可读性。例如,max_classes_per_student。
  3. 使用小驼峰命名法:除了使用下划线连接外,也可以使用小驼峰命名法(Camel Case)。在这种命名法中,除第一个单词外,后续单词的首字母大写。例如,myVariableName、maxClassesPerStudent。
  4. 避免仅靠大小写区分:为了避免混淆,建议不要使用仅靠大小写区分的不同标识符。例如,name 和 Name 容易让人混淆,应尽量避免。
  5. 避免使用下划线开头的标识符:系统内部使用了一些下划线开头的标识符,如 C99 标准添加的类型 _Bool。为了防止命名冲突,建议开发者尽量避免使用下划线开头的标识符

6 编程练习

6.1 计算输入整数的和

        目标:定义两个整数变量,通过键盘输入为它们赋值,然后计算这两个整数的和并输出结果。

#include <stdio.h>// 定义主函数
int main()
{// 声明三个整型变量 a, b 和 sumint a, b, sum;// 提示用户输入两个整数,并使用空格隔开printf("请输入两个整数(使用空格隔开):");// 从标准输入读取两个整数,并分别存储到变量 a 和 b 中scanf("%d %d", &a, &b);// 计算变量 a 和 b 的和,并将结果存储到变量 sum 中sum = a + b;// 输出计算结果printf("两数之和为:%d\n", sum);// 返回 0,表示程序正常结束return 0;
}

        程序在 VS code 中的运行结果如下所示:

6.2 交换两个整数的值

        目标:编写一个程序,输入两个整数,交换它们的值并输出。

        提示:可以使用一个临时变量来辅助交换。

#include <stdio.h>int main()
{int a, b, temp;printf("请输入两个整数(使用空格隔开):");scanf("%d %d", &a, &b);printf("交换前的值为:a = %d, b = %d\n", a, b);// 交换 a 和 b 的值temp = a;a = b;b = temp;printf("交换后的值为:a = %d, b = %d\n", a, b);return 0;
}

        程序在 VS code 中的运行结果如下所示: 

相关文章:

9 C 语言变量详解:声明与定于、初始化与赋值、printf 输出与 scanf 输入、关键字、标识符命名规范

1 初识变量 1.1 变量的意义 在程序设计中&#xff0c;变量是程序中不可或缺的组成单位&#xff0c;最基本的存储单元。它如同现实生活中的容器&#xff0c;用于临时或长期保存各种类型的数据&#xff0c;为程序提供灵活的数据操作能力。 以选购手机为例&#xff0c;手机的各项…...

释放 Mac 存储空间:Ollama 模型迁移到外接 NVMe 磁盘

目录 背景一、准备工作1. 确认外接 NVMe 已挂载2. 创建模型目录 二、迁移已有模型数据&#xff08;可选&#xff09;三、配置模型目录1. 设置环境变量2. 使用软链接&#xff08;强烈推荐&#xff09; 四、测试是否成功 背景 在本地运行 Ollama 时&#xff0c;模型数据默认保存…...

spring-batch批处理框架(1)

学习链接 SpringBatch高效批处理框架详解及实战演练 spring-batch批处理框架(1) spring-batch批处理框架(2) spring batch官方文档 spring batch官方示例代码 - github 文章目录 学习链接一、课程目标课程目标课程内容前置知识适合人群 二、Spring Batch简介2.1 何为批处理…...

MCP系列:权限管理与隐私保护

前言 随着模型上下文协议(MCP)的广泛应用,安全性问题也逐步突显。在前几篇文章中,我们已经探讨了MCP的基本概念、技术架构、实践应用以及工具调用机制。本篇文章将聚焦于MCP的安全性考量,包括权限管理、隐私保护以及风险缓解策略。 对于企业和开发者而言,了解如何保障M…...

【25软考网工笔记】第二章(7)多路复用技术

目录 一、多路复用技术 1. 频分复用FDM 1&#xff09;频分复用的基本概念 2&#xff09;频分复用与相关技术 3&#xff09;注意事项与扩展 2. 时分复用 1&#xff09;同步时分复用 2&#xff09;统计时分复用 3&#xff09;同步时分复用与统计时分复用的对比 4&#…...

任意文字+即梦3.0的海报设计Prompt

即梦3.0版本发布后&#xff0c;对文字的呈现能力得到了极大的提升&#xff0c;网上也出现了各种文章教大家怎么写提示词。 但是你有没有发现一个问题&#xff0c;好的提示词是需要艺术细胞的&#xff0c;只有那些浸淫设计领域的专家总结的提示词才算上乘。 就像是给你一个主题…...

自动化测试相关协议深度剖析及A2A、MCP协议自动化测试应用展望

一、不同协议底层逻辑关联分析 1. OPENAPI协议 OPENAPI 协议核心在于定义 API 的规范结构&#xff0c;它使用 YAML 或 JSON 格式来描述 API 的端点、请求参数、响应格式等信息。其底层逻辑是构建一个清晰、标准化的 API 描述文档&#xff0c;方便不同的客户端和服务端进行对接…...

零基础上手Python数据分析 (18):Matplotlib 基础绘图 - 让数据“开口说话”

写在前面 —— 告别枯燥数字,拥抱可视化力量,掌握 Matplotlib 绘图基础 欢迎来到 “高效数据分析实战指南:Python零基础入门” 专栏! 经过前面 Pandas 模块的学习和实战演练,我们已经掌握了使用 Python 和 Pandas 进行数据处理、清洗、整合、分析的核心技能。 我们能够从…...

[特殊字符] AI 大模型的 Prompt Engineering 原理:从基础到源码实践

&#x1f31f; 引言&#xff1a;Prompt Engineering - AI 大模型的"魔法咒语" 在 AI 大模型蓬勃发展的当下&#xff0c;它们展现出令人惊叹的语言处理能力&#xff0c;从文本生成到智能问答&#xff0c;从机器翻译到代码编写&#xff0c;几乎涵盖了自然语言处理的各…...

C++ 基于多设计模式下的同步异步⽇志系统-1准备工作

一.项目介绍 项⽬介绍 本项⽬主要实现⼀个⽇志系统&#xff0c; 其主要⽀持以下功能: • ⽀持多级别⽇志消息 • ⽀持同步⽇志和异步⽇志 • ⽀持可靠写⼊⽇志到控制台、⽂件以及滚动⽂件中 • ⽀持多线程程序并发写⽇志 • ⽀持扩展不同的⽇志落地⽬标地 二.日志系统的三种实现…...

c# MES生产进度看板,报警看板 热流道行业可用实时看生产进度

MES生产进度看板&#xff0c;报警看板 热流道行业可用实时看生产进度 背景 本软件是给宁波热流道行业客户开发的生产电子看板软件系统 功能 1.录入工艺流程图&#xff08;途程图&#xff09;由多个站别组成。可以手动设置每个工艺站点完成百分比。 2.可以看生成到哪个工…...

C语言学习之预处理指令

目录 预定义符号 #define的应用 #define定义常量 #define定义宏 带有副作用的宏参数 宏替换的规则 函数和宏定义的区别 #和## #运算符 ##运算符 命名约定 #undef ​编辑 命令行定义 条件编译 头文件包含 头文件被包含的方式 1.本地头文件包含 2.库文件包含 …...

腾讯wxg企业微信 后端开发一面

UDP安全吗&#xff0c;怎么修改让其安全&#xff1f; packet header QUIC FrameHeader TCP的三个窗口 滑动 发送 拥塞&#xff0c; 怎么用UDP使用类似的功能 怎么确认消息是否收到? TCP的拥塞控制是怎么样的 HTTPS的握手流程 MySQL为什么用B树 红黑树等结构也能在叶子节点实现…...

【Hot100】 73. 矩阵置零

目录 引言矩阵置零我的解题优化优化思路分步解决思路为什么必须按照这个顺序处理&#xff1f;完整示例演示总结 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;算法专栏&#x1f4a5; 标题&#xff1a;【Hot100】 73. 矩阵置零❣️ 寄语&#xff…...

c++_csp-j算法 (2)

目录 BFS搜索(广度优先搜索) 讲解 BFS搜索算法原理 BFS搜索算法实现 BFS搜索算法的应用 例题(1) P1032 [NOIP 2002 提高组] 字串变换 例题(2) P1443 马的遍历 BFS搜索(广度优先搜索) 讲解 BFS搜索算法原理 广度优先搜索(BFS)算法是一种图的搜索算法,用于遍历…...

学习笔记: Mach-O 文件

“结构决定性质,性质决定用途”。如果不了解结构,是很难真正理解的。 通过一个示例的可执行文件了解Mach-O文件的结构 Mach-O基本结构 Header: &#xff1a;文件类型、目标架构类型等Load Commands&#xff1a;描述文件在虚拟内存中的逻辑结构、布局Data: 在Load commands中…...

基于GRPO将QWEN训练为和deepseek一样的推理模型!

GRPO 群体相对策略优化&#xff08;GRPO&#xff09;算法最初由deepseek团队提出&#xff0c;是近端策略优化(PPO)的一个变体。 GRPO 是一种在线学习算法&#xff0c;它通过使用训练过程中已训练模型自身生成的数据进行迭代改进。GRPO 目标背后的逻辑是在确保模型与参考策略保…...

STM32 外部中断EXTI

目录 外部中断基础知识 STM32外部中断框架 STM32外部中断机制框架 复用功能 重映射 中断嵌套控制器NVIC 外部中断按键控制LED灯 外部中断基础知识 STM32外部中断框架 中断的概念&#xff1a;在主程序运行过程中&#xff0c;出现了特点的中断触发条件&#xff0c;使得…...

Codex CLI - 自然语言命令行界面

本文翻译整理自&#xff1a;https://github.com/microsoft/Codex-CLI 文章目录 一、关于 Codex CLI相关链接资源 二、安装系统要求安装步骤 三、基本使用1、基础操作2、多轮模式 四、命令参考五、提示工程与上下文文件自定义上下文 六、故障排查七、FAQ如何查询可用OpenAI引擎&…...

健身会员管理系统(ssh+jsp+mysql8.x)含运行文档

健身会员管理系统(sshjspmysql8.x) 对健身房的健身器材、会员、教练、办卡、会员健身情况进行管理&#xff0c;可根据会员号或器材进行搜索&#xff0c;查看会员健身情况或器材使用情况。...

数据结构——快排和归并排序(非递归)

快速排序和归并排序一般都是用递归来实现的&#xff0c;但是掌握非递归也是很重要的&#xff0c;说不定在面试的时候面试官突然问你快排或者归并非递归实现&#xff0c;递归有时候并不好&#xff0c;在数据量非常大的时候效率就不好&#xff0c;但是使用非递归结果就不一样了&a…...

Trae,字节跳动推出的 AI 编程助手插件

Trae 插件是 Trae 旗下全新一代的人工智能编程助手&#xff08;前身为 MarsCode 编程助手&#xff09;&#xff0c;以插件形式集成在本地开发环境中&#xff0c;具备极高的兼容性和灵活性&#xff0c;旨在提升开发效率和代码质量。它支持超过100种编程语言&#xff0c;兼容主流…...

Qt项目——Tcp网络调试助手服务端与客户端

目录 前言结果预览工程文件源代码一、开发流程二、Tcp协议三、Socket四、Tcp服务器的关键流程五、Tcp客户端的关键流程六、Tcp服务端核心代码七、客户端核心代码总结 前言 这期要运用到计算机网络的知识&#xff0c;要搞清楚Tcp协议&#xff0c;学习QTcpServer &#xff0c;学…...

2021-11-10 C++蜗牛爬井进3退1求天数

缘由C大一编程题目。-编程语言-CSDN问答 int n 0, t 0;cin >> n;while ((n - 3)>0)n, t;cout << t << endl;...

玛哈特整平机:工业制造中的关键设备

在现代工业制造中&#xff0c;平整度是衡量材料加工质量的核心指标之一。无论是金属板材、塑料片材还是复合材料&#xff0c;若存在弯曲、翘曲或波浪形缺陷&#xff0c;将直接影响后续加工效率和成品质量。整平机&#xff08;又称校平机、矫平机&#xff09;作为解决这一问题的…...

LINUX419 更换仓库(没换成)find命令

NAT模式下虚拟机需与网卡处在同一个网段中吗 和VM1同个网段 会不会影响 这个很重要 是2 改成点2 倒是Ping通了 为啥ping百度 ping到别的地方 4399 倒是ping通了 准备下载httpd包 下不下来 正在替换为新版本仓库 报错 failure: repodata/repomd.xml from local: [Er…...

C# 预定义类型全解析

在 C# 编程中&#xff0c;预定义类型是基础且重要的概念。下面我们来详细了解 C# 的预定义类型。 预定义类型概述 C# 提供了 16 种预定义类型&#xff0c;包含 13 种简单类型和 3 种非简单类型。所有预定义类型的名称都由全小写字母组成。 预定义简单类型 预定义简单类型表…...

【仓颉 + 鸿蒙 + AI Agent】CangjieMagic框架(16):ReactExecutor

CangjieMagic框架&#xff1a;使用华为仓颉编程语言编写&#xff0c;专门用于开发AI Agent&#xff0c;支持鸿蒙、Windows、macOS、Linux等系统。 这篇文章剖析一下 CangjieMagic 框架中的 ReactExecutor。 这个执行器名字中的"React"代表"Reasoning and Acti…...

13.第二阶段x64游戏实战-分析人物等级和升级经验

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 上一个内容&#xff1a;12.第二阶段x64游戏实战-远程调试 效果图&#xff1a; 如下图红框&#xff0c;…...

Linux疑难杂惑 | 云服务器重装系统后vscode无法远程连接的问题

报错原因&#xff1a;本地的known_hosts文件记录服务器信息与现服务器的信息冲突了&#xff0c;导致连接失败。 解决方法&#xff1a;找到本地的known_hosts文件&#xff0c;把里面的所有东西删除后保存就好了。 该文件的路径可以在报错中寻找&#xff1a;比如我的路径就是&a…...

使用EXCEL绘制平滑曲线

播主播主&#xff0c;你都多少天没更新了&#xff01;&#xff01;&#xff01;泥在干什么&#xff1f;你还做这个账号麻&#xff1f;&#xff01;&#xff01;&#xff01; 做的做的&#xff08;哭唧唧&#xff09;&#xff0c;就是最近有些忙&#xff0c;以及…… 前言&…...

你的电脑在开“外卖平台”?——作业管理全解析

你的电脑在开“外卖平台”&#xff1f;——作业管理全解析 操作系统系列文章导航&#xff08;点击跳转&#xff09; 程序员必看&#xff1a;揭开操作系统的神秘面纱 &#xff1a;从进程、内存到设备管理&#xff0c;全面解析操作系统的核心机制与日常应用。告别电脑卡顿&#x…...

平均池化(Average Pooling)

1. 定义与作用​​ ​​平均池化​​是一种下采样操作&#xff0c;通过对输入区域的数值取​​平均值​​来压缩数据空间维度。其核心作用包括&#xff1a; ​​降低计算量​​&#xff1a;减少特征图尺寸&#xff0c;提升模型效率。​​保留整体特征​​&#xff1a;平滑局部…...

JavaScript中的Event事件对象详解

一、事件对象&#xff08;Event&#xff09;概述 1. 事件对象的定义 event 对象是浏览器自动生成的对象&#xff0c;当用户与页面进行交互时&#xff08;如点击、键盘输入、鼠标移动等&#xff09;&#xff0c;事件触发时就会自动传递给事件处理函数。event 对象包含了与事件…...

OSPF综合实验(HCIP)

1&#xff0c;R5为ISP&#xff0c;其上只能配置Ip地址&#xff1b;R4作为企业边界路由器&#xff0c; 出口公网地址需要通过ppp协议获取&#xff0c;并进行chap认证 2&#xff0c;整个OSPF环境IP基于172.16.0.0/16划分&#xff1b; 3&#xff0c;所有设备均可访问R5的环回&…...

Unreal 从入门到精通之如何接入MQTT

文章目录 前言MQTT 核心特性MQTT 在 UE5 中的应用场景在 UE5 中集成 MQTTMqtt Client 的APIMqtt Client 使用示例最后前言 MQTT(Message Queuing Telemetry Transport)是一种专为物联网(IoT)和低带宽、高延迟网络环境设计的轻量级消息传输协议。它采用发布/订阅(Pub/Sub)…...

数据结构实验6.2:稀疏矩阵的基本运算

文章目录 一&#xff0c;实验目的二&#xff0c;问题描述三&#xff0c;基本要求四、算法分析&#xff08;一&#xff09;稀疏矩阵三元组表示法存储结构&#xff08;二&#xff09;插入算法&#xff08;三&#xff09;创建算法&#xff08;四&#xff09;输出算法&#xff08;五…...

BDO分厂积极开展“五个一”安全活动

BDO分厂为规范化学习“五个一”活动主题&#xff0c;按照“上下联动、分头准备 、差异管理、资源共享”的原则&#xff0c;全面激活班组安全活动管理新模式&#xff0c;正在积极开展班组安全活动&#xff0c;以单元班组形式对每个班组每周组织一次“五个一”安全活动。 丁二醇单…...

那就聊一聊mysql的锁

MySQL 的锁机制是数据库并发控制的核心&#xff0c;作为 Java 架构师需要深入理解其实现原理和适用场景。以下是 MySQL 锁机制的详细解析&#xff1a; 一、锁的分类维度 1. 按锁粒度划分 锁粒度特点适用场景​全局锁​锁定整个数据库&#xff08;FLUSH TABLES WITH READ LOC…...

Python番外——常用的包功能讲解和分类组合

目录 1. Web开发框架与工具 2. 数据处理与分析 3. 网络请求与爬虫 4. 异步编程 5. 数据库操作 6. 图像与多媒体处理 7. 语言模型与NLP 8. 安全与加密 9. 配置与工具 10. 其他工具库 11.典型组合场景 此章节主要是记录我所使用的包&#xff0c;以及模块。方便供自己方…...

【mongodb】数据库操作

目录 1. 查看所有数据库2. 切换到指定数据库&#xff08;若数据库不存在&#xff0c;则创建&#xff09;3. 查看当前使用的数据库4. 删除当前数据库5.默认数据库 1. 查看所有数据库 1.show dbs2.show databases 2. 切换到指定数据库&#xff08;若数据库不存在&#xff0c;则…...

四月下旬系列

CUHKSZ 校赛 期中考试 DAY -1。 省流&#xff1a;前 1h 切 6 题&#xff0c;后 3h 过 1 题&#xff0c;读错一个本来很【】的题&#xff0c;被大模拟构造创【】了。 本地除了 VSCode 没有 Extensions&#xff0c;别的和省选差不多。使用 DEVC。 前 6 题难度 < 绿&#x…...

计算机网络 3-4 数据链路层(局域网)

4.1 局域网LAN 特点 1.覆盖较小的地理范围 2.较低的时延和误码率 3.局域网内的各节点之间 4.支持单播、广播、多播 分类 关注三要素 &#xff08;出题点&#xff09; ①拓扑结构 ②传输介质 ③介质访问控制方式 硬件架构 4.2 以太网 4.2.1 层次划分 4.2.2 物理层标准…...

WebSocket介绍

在网页聊天项目中&#xff0c;为了实现消息的发送和及时接收&#xff0c;我们使用了WebSocket&#xff0c;接下来就简单介绍一下这个WebSocket。 了解消息的转发逻辑 当两个不同客户端在不同的局域网中互相发送消息时&#xff0c;假如这两个客户端分别是a和b&#xff0c;因为…...

rpcrt4!COMMON_AddressManager函数分析之和全局变量rpcrt4!AddressList的关系

第一部分&#xff1a; 1: kd> x rpcrt4!addresslist 77c839dc RPCRT4!AddressList 0x00000000 1: kd> g Breakpoint 2 hit RPCRT4!OSF_ADDRESS::CompleteListen: 001b:77c0c973 55 push ebp 1: kd> g Breakpoint 11 hit RPCRT4!COMMON_Addr…...

Java Web 之 Tomcat 100问

Tomcat 是什么&#xff1f; Tomcat 是一个开源的 Java Servlet 容器和 Web 容器。 Tomcat 的主要功能有哪些&#xff1f; 三大主要功能&#xff1a; 运行 Java Web 应用。处理 HTTP 请求。管理 Web 应用。 如何安装 Tomcat &#xff1f; 下载 Tomcat 安装包&#xff08;A…...

ESB —— 企业集成架构的基石:功能、架构与应用全解析

企业服务总线&#xff08;Enterprise Service Bus&#xff0c;ESB&#xff09;是一种重要的企业级集成架构&#xff0c;以下为你详细介绍&#xff1a; 一、概念与定义 ESB 是一种基于面向服务架构&#xff08;SOA&#xff09;的中间件技术&#xff0c;它充当了企业内部不同应…...

wordpress SMTP配置qq邮箱发送邮件,新版QQ邮箱授权码获取方法

新版的QQ邮箱界面不同了&#xff0c;以下是新版的设置方法&#xff1a; 1. 进入邮箱后&#xff0c;点右上角的设置图标&#xff1a; 2. 左下角的菜单里&#xff0c;选择“账号与安全” &#xff1a; 3. 然后如下图&#xff0c;开启SMTP 服务&#xff1a; 4. 按提示验证短信&am…...

【操作系统原理04】进程同步

文章目录 大纲一.进程同步与进程互斥0.大纲1.同步2.互斥 二.进程互斥的软件实现方法0.大纲1.单标志法2.双标志先检查法3.双标志后检查法4.Peterson算法 三.进程互斥的硬件实现方法0.大纲1.中断屏蔽方法2.TestAndSet指令3.Swap指令 四.互斥锁五.信号量机制0.大纲1.概念2.整形信号…...

Java ThreadPoolExecutor 深度解析:从原理到实战

在 Java 的多线程编程领域&#xff0c;ThreadPoolExecutor是一个至关重要的工具类&#xff0c;它为开发者提供了强大且灵活的线程池管理能力。合理使用ThreadPoolExecutor&#xff0c;不仅能够提升应用程序的性能和响应速度&#xff0c;还能有效控制资源消耗&#xff0c;避免因…...