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

C语言系列1——详解C语言:变量、常量与数据类型

目录

  • 写在开始
  • 1. 变量与常量的概念
    • 1.1. 变量
    • 1.2. 常量
    • 1.3. 变量与常量的比较
    • 1.4. 选择变量还是常量
  • 2. C语言中的基本数据类型
    • 2.1. 整型(Integer Types)
    • 2.2. 浮点型(Floating-Point Types)
    • 2.3. 字符型(Character Type)
    • 2.4. 布尔型(Boolean Type)
    • 2.5. 枚举类型(Enumeration Type)
    • 2.6. 选择合适的数据类型
    • 2.7. 类型转换
    • 2.8. 类型限定词
    • 2.9. 结构体和联合
  • 3. 变量声明与使用技巧
    • 3.1. 变量声明
    • 3.2. 变量初始化
    • 3.3. 命名规范
    • 3.4. 变量作用域
    • 3.5. 使用const限定符
  • 4. 练习题目
    • 4.1. 参考题目
    • 4.2. 参考答案
  • 写在最后

写在开始

在学习C语言的过程中,理解变量与常量的概念是基础,也是必经之路。这不仅涉及到如何存储数据,还包括如何有效地在程序中使用这些数据。此外,C语言提供了一系列的基本数据类型,为不同的数据存储需求和操作提供支持。本文将深入探讨变量与常量的定义、C语言中的基本数据类型,以及如何正确声明和使用变量。

1. 变量与常量的概念

在C语言编程中,理解变量与常量的概念是基础且关键的一步,它们是数据存储和操作的核心。

1.1. 变量

变量是程序中用于存储数据值的标识符,其在程序执行过程中的值是可以改变的。每个变量都有一个数据类型,它定义了变量存储的数据种类(如整数、浮点数、字符等)以及占用的空间大小。

特点:

  • 可变性:变量的值在程序运行时可以被改变。
  • 类型性:变量声明时必须指定数据类型。
  • 标识性:变量通过唯一的标识符(变量名)进行访问。

示例:

int age = 25; // 声明一个整型变量age,并初始化为25
age = 26; // 更新age变量的值为26

1.2. 常量

常量是一种在程序定义后其值不能被修改的标识符。在C语言中,常量可以是直接量(如字面常量5'a'),也可以是通过#define预处理指令或使用const关键字定义的命名常量。

特点:

  • 不变性:一旦定义,常量的值不可更改。
  • 类型性:常量具有确定的数据类型。
  • 标识性:命名常量通过唯一的标识符进行访问。

示例:

#define MAX_SIZE 100 // 使用#define定义的常量
const int minSize = 10; // 使用const关键字定义的整型常量

1.3. 变量与常量的比较

虽然变量和常量在使用中都承担着数据存储的角色,但它们在数据的可变性上有本质的区别。变量的值在程序运行时可以改变,适用于存储计算过程中可能变化的数据;而常量的值一旦定义就不可更改,适用于存储不变的数据,如配置参数、状态码等。

1.4. 选择变量还是常量

在实际编程中,合理选择使用变量或常量对于提高代码的可读性和维护性非常重要。一般原则是:

  • 当数据值需要在程序执行过程中改变时,使用变量。
  • 当数据值固定不变,或者你希望保护该值不被意外修改时,使用常量。

2. C语言中的基本数据类型

在C语言中,基本数据类型是构建变量的基础,它们定义了变量可以存储的数据种类以及占用的空间大小。以下是C语言中几种主要的基本数据类型,它们在内存中占用的空间大小和范围可能根据编译器和操作系统的不同而有所变化。

2.1. 整型(Integer Types)

整型用于存储整数,分为以下几种:

  • int:标准整数类型,通常是32位,用于存储正数、负数或零。
  • short:短整型,至少16位,占用空间小于或等于int
  • long:长整型,至少32位,占用空间大于或等于int
  • unsigned:无符号整型,只能表示非负数,包括unsigned intunsigned shortunsigned long等。

整型选择建议:

  • 对于大多数整数运算,使用int即可满足需求,它是最自然的整数类型,并且在大多数机器上运算效率最高。
  • 当数据范围较小,或需要节省内存空间时,可以考虑使用short
  • 对于需要表示超出int范围的大整数,应使用longlong long类型。
  • 在处理只需要非负数的场景,如数组索引,应使用unsigned类型,它可以扩大可用的正数范围。

2.2. 浮点型(Floating-Point Types)

浮点型用于存储小数,包括:

  • float:单精度浮点数,提供约6-7位十进制数的精度,适用于需要在较小的内存空间存储近似数值的场合。
  • double:双精度浮点数,提供约15-16位十进制数的精度,占用的空间是float的两倍,适用于需要高精度计算的场合。
  • long double:扩展精度浮点数,提供比double更高的精度,适用于特别需要高精度和范围的应用。

浮点型选择建议:

  • 当数值范围和精度要求不是特别高时,float类型足够使用,它在大多数应用中提供了合理的精度和范围,同时能够节省内存空间。
  • 对于需要高精度计算的应用,如科学计算和工程设计,应优先考虑使用double类型。虽然它占用的内存和计算时间更多,但能提供更高的精度。
  • long double提供的精度比double更高,但在实际应用中不常用,因为它会消耗更多的内存和计算资源。在需要极高精度时才考虑使用。

2.3. 字符型(Character Type)

  • char:字符型,占用1个字节(8位),用于存储单个字符,如字母、数字或其他符号。char类型可以是有符号的(signed char)或无符号的(unsigned char),用于表示ASCII字符或其他字符集中的字符。

2.4. 布尔型(Boolean Type)

  • _Bool:C99标准引入的布尔类型,表示逻辑值(1)或(0)。在包含stdbool.h头文件后,也可以使用booltruefalse作为布尔类型和值的别名。

2.5. 枚举类型(Enumeration Type)

  • enum:枚举类型,用于定义一组命名的整数常量。枚举是一种用户自定义的数据类型,它提供了一种将数字常量赋予更易读的名字的方法。

2.6. 选择合适的数据类型

选择合适的数据类型对于优化程序性能、减少内存占用以及提高代码可读性都至关重要。开发者应根据数据的特性(如数值范围、是否需要小数等)和程序的需求(如对精度的要求、对内存占用的考虑等)来选择最合适的数据类型。

2.7. 类型转换

在C语言中,类型转换是一个常见的操作,它允许开发者在不同类型间转换数据。类型转换可以是隐式的,也可以是显式的。

  • 隐式类型转换:当一个运算符的操作数类型不匹配时,C语言会自动将类型转换为一个共同的类型。这通常发生在混合类型的算术运算中。

    int i = 10;
    double d = 5.5;
    double result = i + d; // int类型的i被隐式转换为double类型
    
  • 显式类型转换:也称为强制类型转换,使用类型转换运算符(type_name)来实现。

    double d = 5.5;
    int i = (int)d; // 将double类型的d显式转换为int类型
    

在进行类型转换时,应特别注意转换可能带来的精度丢失或值改变,尤其是从大范围类型转换到小范围类型时。

2.8. 类型限定词

C语言还提供了一些类型限定词,用于给变量添加额外的属性:

  • const:表示变量的值不可修改,尝试修改const变量的值会导致编译错误。

    const int readOnly = 10;
    // readOnly = 20; // 这将导致编译错误
    
  • volatile:告诉编译器,变量的值可能以程序未明确指定的方式被改变,防止编译器对代码进行过度优化。

    volatile int sensorInput;
    
  • register:建议编译器将变量存储在CPU的寄存器中以加快其访问速度。这只是一个建议,编译器可能会忽略它。

    register int fastVar;
    

2.9. 结构体和联合

除了基本数据类型,C语言还允许定义复合数据类型,如结构体(struct)和联合体(union):

  • 结构体(struct:允许将多个不同类型的数据项组合成一个单一的复合类型。

    struct Person {char name[50];int age;float height;
    };
    
  • 联合体(union:允许在相同的内存位置存储不同的数据类型,但任何时候只能存储其中一个数据项。

    union Data {int i;float f;char str[20];
    };
    

结构体和联合体提供了更高级的数据组织方式,使得可以更加方便地处理复杂的数据结构。

3. 变量声明与使用技巧

在C语言中,变量声明是程序中定义变量的过程,它告诉编译器变量的名称、类型以及可能的初始值。正确声明和使用变量是编写高效、可维护C程序的关键。

3.1. 变量声明

声明变量时,必须指定变量的类型和名称。基本的变量声明语法如下:

type variable_name;
  • 类型(type):变量的数据类型,如intfloatchar等。
  • 变量名(variable_name):变量的标识符,用于在程序中引用该变量。

示例:

int age;
float salary;
char grade;

3.2. 变量初始化

在声明变量时,可以同时为其赋初值,这称为变量的初始化。初始化语法如下:

type variable_name = value;

示例:

int age = 25;
float salary = 4500.50;
char grade = 'A';

初始化变量有助于程序的可读性,并可以防止未初始化变量的潜在错误。

3.3. 命名规范

选择有意义的变量名是良好编程风格的重要部分。以下是一些命名变量时的建议:

  • 使用有描述性的名称,使变量的用途清晰。
  • 避免使用单字母变量名,除非在短小函数或循环中。
  • 对于多个单词的变量名,可以使用下划线分隔(snake_case)或驼峰命名法(camelCase)。

3.4. 变量作用域

变量的作用域决定了在程序的哪个部分可以访问该变量。C语言中主要有两种作用域:

  • 局部变量:在函数或块内声明的变量,只能在其声明的函数或块内访问。
  • 全局变量:在所有函数外部声明的变量,可以在程序的任何地方访问。

合理安排变量的作用域,可以提高程序的模块化和减少变量冲突。

3.5. 使用const限定符

使用const限定符可以定义常量变量,即一旦赋值后就不允许更改的变量。这对于需要保护的值非常有用。

const int MAX_AGE = 100;

4. 练习题目

为了加深对C语言变量声明与使用的理解,以下是一些具体的练习题目推荐,通过这些练习,你可以更好地掌握变量和常量的使用,以及数据类型和作用域的概念。

4.1. 参考题目

1. 变量声明和初始化

目标:熟悉基本数据类型的声明和初始化。

题目:编写一个程序,声明以下类型的变量并为它们赋初值:intfloatchardouble。然后,编写代码打印这些变量的值。

提示:考虑使用printf函数输出变量值,注意匹配相应的格式说明符。

2. const变量的使用

目标:理解const关键字的作用。

题目:定义一个const变量MAX_SIZE并初始化为100,尝试在程序中修改MAX_SIZE的值,观察并记录编译器的反馈。

提示:反思为什么不能修改const变量的值,以及在实际编程中const的应用场景。

3. 局部变量与全局变量

目标:掌握局部变量和全局变量的作用域差异。

题目:创建一个程序,其中包含两个函数。在第一个函数中声明一个全局变量,并在这两个函数中分别修改和打印该全局变量的值。然后,在第二个函数中声明一个与全局变量同名的局部变量,修改和打印该局部变量的值,观察结果。

提示:注意全局变量和局部变量在不同函数中的作用范围和影响。

4. 数据类型转换

目标:理解隐式和显式数据类型转换。

题目:编写一个程序,声明一个整型变量和一个浮点型变量,先进行隐式类型转换后打印结果,然后使用强制类型转换(显式类型转换)得到一个新值并打印。

提示:使用printf函数检查和比较转换前后变量的值,注意数据精度的变化。

4.2. 参考答案

1. 变量声明和初始化

#include <stdio.h>int main() {int myInt = 10;float myFloat = 3.14;char myChar = 'A';double myDouble = 9.81;printf("Integer: %d\n", myInt);printf("Float: %f\n", myFloat);printf("Char: %c\n", myChar);printf("Double: %lf\n", myDouble);return 0;
}

2. const变量的使用

#include <stdio.h>int main() {const int MAX_SIZE = 100;printf("Original MAX_SIZE: %d\n", MAX_SIZE);// 尝试取消下一行的注释,编译程序将会出错// MAX_SIZE = 200;printf("Modified MAX_SIZE: %d\n", MAX_SIZE);return 0;
}

3. 局部变量与全局变量

#include <stdio.h>int globalVar = 10; // 全局变量void modifyGlobal() {globalVar = 20; // 修改全局变量printf("In modifyGlobal, globalVar: %d\n", globalVar);
}void shadowGlobal() {int globalVar = 30; // 局部变量,遮蔽了同名的全局变量printf("In shadowGlobal, local globalVar: %d\n", globalVar);
}int main() {printf("In main, before modifyGlobal, globalVar: %d\n", globalVar);modifyGlobal();printf("In main, after modifyGlobal, globalVar: %d\n", globalVar);shadowGlobal();printf("In main, after shadowGlobal, globalVar: %d\n", globalVar);return 0;
}

4. 数据类型转换

#include <stdio.h>int main() {int myInt = 5;float myFloat = 2.5;// 隐式类型转换float sum = myInt + myFloat;printf("Sum (Implicit Conversion): %f\n", sum);// 显式类型转换int intSum = myInt + (int)myFloat;printf("Sum (Explicit Conversion): %d\n", intSum);return 0;
}

写在最后

理解并掌握变量与常量、数据类型的使用对于学习C语言至关重要。它们是构建程序逻辑、实现数据存储和处理的基础。通过本文的介绍,相信你对这些概念有了更深入的理解。作为进一步的练习,建议尝试解决一些实际问题,如编写程序计算数列的和、处理用户输入和实现简单的数据结构等,这将有助于巩固你的知识并提高编程技能。

相关文章:

C语言系列1——详解C语言:变量、常量与数据类型

目录 写在开始1. 变量与常量的概念1.1. 变量1.2. 常量1.3. 变量与常量的比较1.4. 选择变量还是常量 2. C语言中的基本数据类型2.1. 整型&#xff08;Integer Types&#xff09;2.2. 浮点型&#xff08;Floating-Point Types&#xff09;2.3. 字符型&#xff08;Character Type&…...

WordPress修改所有用户名并发送邮件通知的插件Easy Username Updater

前面跟大家介绍了『如何修改WordPress后台管理员用户名&#xff1f;推荐2种简单方法』一文&#xff0c;但是对于有很多用户的站长来说&#xff0c;操作有点复杂&#xff0c;而且无法发邮件通知对方&#xff0c;所以今天boke112百科向大家推荐一款可以直接在WordPress后台修改所…...

C语言中的数据类型-强转

强制类型转换 概念&#xff1a;将某种类型的数据转化我们需要的数据类型&#xff0c;注意强制类型转化是临时强转&#xff0c;不会改变本身的数据类型。 强转又分为显式强转和隐式转化 显示强转是按照我们的要求进行转化 格式&#xff1a;(需要转化数据类型)变量名 #inclu…...

大数据可视化BI分析工具Apache Superset结合内网穿透实现远程访问

文章目录 前言1. 使用Docker部署Apache Superset1.1 第一步安装docker 、docker compose1.2 克隆superset代码到本地并使用docker compose启动 2. 安装cpolar内网穿透&#xff0c;实现公网访问3. 设置固定连接公网地址 前言 Superset是一款由中国知名科技公司开源的“现代化的…...

C# 线程与线程池的使用方法、注意事项

在C#中&#xff0c;线程和线程池是两种用于实现多线程编程的方式。线程用于执行并发任务&#xff0c;而线程池提供了一种更有效率的方式来管理和复用线程资源。 C# 线程&#xff08;System.Threading.Thread&#xff09; 创建和启动线程&#xff1a; Thread thread new Thre…...

2024年华为OD机试真题-按身高和体重排队-Python-OD统一考试(C卷)

题目描述: :某学校举行运动会,学生们按编号(1、2、3…n)进行标识,现需要按照身高由低到高排列,对身高相同的人,按体重由轻到重排列;对于身高体重都相同的人,维持原有的编号顺序关系。请输出排列后的学生编号。 输入描述:两个序列,每个序列由n个正整数组成(0 < n …...

openGauss学习笔记-218 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-I/O

文章目录 openGauss学习笔记-218 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-I/O218.1 查看I/O状况218.2 性能参数分析 openGauss学习笔记-218 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-I/O 获取openGauss节点的CPU、内存、I/O和网络资源使用情况&#xf…...

去除vue自带的边距

使用vue时发现总有去不掉的外边距&#xff0c;在index.vue里面怎样设置样式都不管用 查阅资料后发现要在vue项目自带的index.html文件内添加下面的样式代码才行 <style>*{margin: 0;padding: 0;}body,html{margin: 0;padding: 0;} </style>...

ElasticSearch级查询Query DSL上

目录 ES高级查询Query DSL match_all 返回源数据_source 返回指定条数size 分页查询from&size 指定字段排序sort 术语级别查询 Term query术语查询 Terms Query多术语查询 exists query ids query range query范围查询 prefix query前缀查询 wildcard query通…...

120.乐理基础-五线谱-五线谱的多声部与指法问题

内容参考于&#xff1a;三分钟音乐社 上一个内容&#xff1a;119.乐理基础-五线谱-五线谱的标记-CSDN博客 五线谱多声部与简谱的多声部一样&#xff1a;简谱的多声部 五线谱多声部例子&#xff1a;钢琴谱 另一个例子&#xff1a;在纵向上有多个音符 然后放大之后&#xff0c…...

YOLOv5独家改进:上采样算子 | 超轻量高效动态上采样DySample,效果秒杀CAFFE,助力小目标检测

💡💡💡本文独家改进:一种超轻量高效动态上采样DySample, 具有更少的参数、FLOPs,效果秒杀CAFFE和YOLOv5网络中的nn.Upsample 💡💡💡在多个数据集下验证能够涨点,尤其在小目标检测领域涨点显著。 收录 YOLOv5原创自研 https://blog.csdn.net/m0_63774211/cate…...

洛谷 P1102 A-B 数对 (Java)

洛谷 P1102 A-B 数对 (Java) 传送门&#xff1a;P1102 A-B 数对 题目&#xff1a; A-B 数对 题目背景 出题是一件痛苦的事情&#xff01; 相同的题目看多了也会有审美疲劳&#xff0c;于是我舍弃了大家所熟悉的 AB Problem&#xff0c;改用 A-B 了哈哈&#xff01; 题目描…...

情人节到了,写一份爱心程序(python)

前言 情人节到了&#xff0c;写一份爱心代码给喜欢的人呀 公式 首先我们介绍下爱心的公式的参数方程&#xff1a; x 16 s i n 3 ( t ) x 16sin^3(t) x16sin3(t) y 13 c o s ( t ) − 5 c o s ( 2 t ) − 2 c o s ( 3 t ) − c o s ( 4 t ) y 13cos(t) - 5cos(2t) - 2co…...

Java图形化界面编程—— 基本组件和对话框 笔记

2.5 AWT中常用组件 2.5.1 基本组件 组件名功能ButtonButtonCanvas用于绘图的画布Checkbox复选框组件&#xff08;也可当做单选框组件使用&#xff09;CheckboxGroup选项组&#xff0c;用于将多个Checkbox 组件组合成一组&#xff0c; 一组 Checkbox 组件将只有一个可以 被选中…...

使用Docker,拉取Nginx镜像,创建并运行Nginx容器

查看DockerHub&#xff0c;拉取Nginx镜像&#xff0c;创建并运行Nginx容器。 在DockerHub中搜索Ningx镜像&#xff0c;查看镜像名称 拉取Nginx镜像 [rootservice ~]# systemctl start docker [rootservice ~]# mkdir -p /etc/docker [rootservice ~]# tee /etc/docker/daemo…...

InstantBox:开箱即用的临时 Linux 环境

在云计算和虚拟化技术日益成熟的今天&#xff0c;我们有时需要一个快速、简单、临时的 Linux 环境来进行各种任务。这就是 InstantBox 的用武之地。 什么是 InstantBox&#xff1f; InstantBox 是一个开源项目&#xff0c;它可以快速启动临时的 Linux 系统&#xff0c;并提供…...

【面试】国家公务员考试复试,面试内容准备方向(非技术面试考察点)

【面试】国家公务员考试复试&#xff0c;面试内容准备方向&#xff08;非技术面试考察点&#xff09; 说明&#xff1a; csdn无法发部分考试相关例题&#xff08;提示涉z&#xff09;&#xff0c;所以本文主要还是针对评分标准和仪表等相关因素。 文章目录 1、面试试卷与评分1.…...

点餐|外卖订餐小程序|基于微信小程序的外卖订餐系统设计与实现(源码+数据库+文档)

点餐|外卖订餐小程序目录 目录 基于微信小程序的外卖订餐系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户微信端功能模块 2、管理员服务端功能模块 3、商家务端功能模块 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设…...

使用Cargo创建、编译与运行Rust项目

在 Rust 开发中&#xff0c;Cargo 是一个非常重要的工具&#xff0c;它负责项目的构建、管理和依赖管理。以下是如何使用 Cargo 创建、编译和运行 Rust 项目的详细步骤。 1. 创建新项目 首先确保你已经在计算机上安装了 Rust 和 Cargo。然后&#xff0c;在命令行中输入以下命…...

Js中toFixed(2)精度问题的原因及解决办法

toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。例如将数据Num保留2位小数&#xff0c;则表示为&#xff1a;toFixed(Num)&#xff1b;但是其四舍五入的规则与数学中的规则不同&#xff0c;使用的是银行家舍入规则&#xff0c;银行家舍入&#xff1a;所谓银行家舍入…...

【医学大模型 知识增强】SMedBERT:结构化语义知识 + 医学大模型 = 显著提升大模型医学文本挖掘性能

SMedBERT&#xff1a;结构化语义知识 医学大模型 显著提升医学文本挖掘任务性能 名词解释结构化语义知识预训练语言模型医学文本挖掘任务 提出背景具体步骤提及-邻居混合注意力机制实体嵌入增强实体描述增强三元组句子增强 提及-邻居上下文建模域内词汇权重学习领域自监督任务…...

Python爬虫:安全与会话管理

源码分享 ​​https://docs.qq.com/sheet/DUHNQdlRUVUp5Vll2?tabBB08J2​​ 在进行网站数据抓取时&#xff0c;会话管理是保持与目标网站通信连续性的一种机制。这对于模拟登录、保持用户状态、维护cookie等场景至关重要。同时&#xff0c;安全性也是我们不可忽视的一个方面…...

[Python进阶] 识别验证码

11.3 识别验证码 我们再开发某些项目的时候&#xff0c;如果遇到要登录某些网页&#xff0c;那么会经常遇到输入验证码的情况&#xff0c;而每次人工输入验证码的话&#xff0c;比较浪费时间。于是&#xff0c;可以通过调用某些接口进行识别。 11.3.1 调用百度文字识别接口 …...

华为问界M9:全方位自动驾驶技术解决方案

华为问界M9的自动驾驶技术采用了多种方法来提高驾驶的便利性和安全性。以下是一些关键技术&#xff1a; 智能感知系统&#xff1a;问界M9配备了先进的传感器&#xff0c;包括高清摄像头、毫米波雷达、超声波雷达等&#xff0c;这些传感器可以实时监测车辆周围的环境&#xff0…...

Java 与 JavaScript 的区别与联系

Java 和 JavaScript 两种编程语言在软件开发中扮演着重要的角色。尽管它们都以“Java”命名&#xff0c;但实际上它们是完全不同的语言&#xff0c;各有其独特的特点和用途。本文将深入探讨 Java 和 JavaScript 的区别与联系&#xff0c;帮助大家更好地理解它们在编程世界中的作…...

React18原理: 时间分片技术选择

渲染1w个节点的不同方式 1 &#xff09;案例1&#xff1a;一次渲染1w个节点 <div idroot><div><script type"text/javascript">function randomHexColor() {return "#" ("0000" (Math.random() * 0x1000000 << 0).toS…...

【QT+QGIS跨平台编译】之三十三:【SpatiaLite+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、SpatiaLite介绍二、文件下载三、文件分析四、pro文件五、编译实践一、SpatiaLite介绍 SpatiaLite是一个开源的空间数据库库,它是在SQLite关系数据库管理系统上扩展而来的。SpatiaLite提供了对地理空间数据的存储、查询和分析功能,使得开发人员可以在应用程序中…...

【JavaEE】_CSS选择器

目录 1. 基本语法格式 2. 引入方式 2.1 内部样式 2.2 内联样式 2.3 外部样式 3. 基础选择器 3.1 标签选择器 3.2 类选择器 3.3 ID选择器 4. 复合选择器 4.1 后代选择器 4.2 子选择器 4.3 并集选择器 4.4 伪类选择器 1. 基本语法格式 选择器若干属性声明 2. 引入…...

Flaurm实现中文搜索

目录 摘要需求本文涉及环境情况如下解决方案最终效果文章其他链接&#xff1a; 摘要 Flarum本身对中文支持并不理想&#xff0c;但随着版本更新&#xff0c;逐渐加强了对中文的优化。然而在1.8.5版本&#xff0c;却还是不支持中文搜索网站文章内容。作者在检索了全网教程&#…...

STM32自学☞定时器外部时钟案例

本案例主要是通过外部时钟实现对射式红外传感器的计次&#xff0c;在oled显示屏上显示CNT的次数 timer_interrupt.c文件 #include "stm32f10x.h" #include "stm32f10x_tim.h" #include "timer_interrupt.h" #include "stdint.h" …...

PyCharm中无法调用ffmpeg命令行

问题前提 ffmpeg在系统中正确安装&#xff0c;且在cmd命令行可以正确使用。但在PyCharm中无法调用&#xff01; 但是在外部系统cmd中使用确是正常的~ 问题关键 我的python解释器使用的是anaconda的虚拟环境&#xff0c;导致在外部环境配置的path路径没有包括在内 解决办法…...

Go基础知识学习-习题题解

这里给出来官方教程中部分题目的答案&#xff0c;都是自己练习的时候写的&#xff0c;可以参考来提供思路。 当然了&#xff0c;练习还是最好自己写&#xff0c;要不对相关的知识点不可能理解透彻。 Exercise: Loops and Functions package mainimport ("fmt" )fu…...

MyBatis中的XML实现和动态SQL实现

文章目录 一、XML实现1.1增1.2删1.3查1.4改 二、XML方式实现动态SQL2.1if标签2.2trim标签2.3where标签2.4set标签2.5foreach标签2.6include标签和sql标签 一、XML实现 先在新建的XML文件中写入如下内容&#xff1a; <?xml version"1.0" encoding"UTF-8&qu…...

clickhouse计算前后两点间经纬度距离

问题 计算如图所示前后两点经纬度的距离&#xff1f; 方法 1、用开窗函数将如图所示数据下移一行 selectlongitude lon1,latitude lat1,min(longitude) over(order by time1 asc rows between 1 PRECEDING and 1 PRECEDING) lon2,min(latitude) over(order by time1 asc row…...

【51单片机】DS18B20(江科大)

一、DS18B20温度传感器 1.DS18B20介绍 DS18B20是一种常见的数字温度传感器,其控制命令和数据都是以数字信号的方式输入输出,相比较于模拟温度传感器,具有功能强大、硬件简单、易扩展、抗干扰性强等特点 测温范围 :- 55℃到125℃ 通信接口:1-Wire(单总线) 其它特征:可形成…...

Windows平台git clone文件路径太长报错

问题描述 在Windows下拉取一些比较大的开源项目经常会提示文件路径太长&#xff08;filename too long&#xff09;&#xff0c;然后死活都不成功 解决办法 1.配置git git config --system core.longpaths true2.修改文件C:\Program Files\Git\etc\gitconfig&#xff08;需…...

中科大计网学习记录笔记(十):P2P 应用

前言&#xff1a; 学习视频&#xff1a;中科大郑烇、杨坚全套《计算机网络&#xff08;自顶向下方法 第7版&#xff0c;James F.Kurose&#xff0c;Keith W.Ross&#xff09;》课程 该视频是B站非常著名的计网学习视频&#xff0c;但相信很多朋友和我一样在听完前面的部分发现信…...

Python算法题集_LRU 缓存

Python算法题集_LRU 缓存 题146&#xff1a;LRU 缓存1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【队列字典】2) 改进版一【有序字典】3) 改进版二【双向链表字典】 4. 最优算法 本文为Python算法题集之一的代码示例 题146&#xff1a;LRU …...

局部加权回归

局部加权回归&#xff08;Local Weighted Regression&#xff09;是一种非参数回归方法&#xff0c;用于解决线性回归模型无法很好拟合非线性数据的问题。它通过给不同的样本赋予不同的权重&#xff0c;使得在拟合模型时更加关注靠近目标点附近的样本数据。 局部加权回归的基本…...

国内国外最好的数据恢复软件评测,哪种数据恢复软件最有效?

随着数字和商业格局在多个领域不断发展&#xff0c;变得更加依赖数据&#xff0c;威胁数据的努力也同样存在。 计算机病毒、勒索软件和恶意软件是导致数据丢失的主要威胁&#xff0c;可能会让您的组织陷入停机或严重影响您的工作效率。而解决这个问题的方法就是数据恢复。 什么…...

bugku 1

Flask_FileUpload 文件上传 先随便传个一句话木马 看看回显 果然不符合规定 而且发现改成图片什么的都不行 查看页面源代码&#xff0c;发现提示 那应该就要用python命令才行 试试ls 类型要改成图片 cat /flag 好像需要密码 bp爆破 根据提示&#xff0c;我们先抓包 爆破 …...

C++ bfs再探迷宫游戏(五十五)【第二篇】

今天我们用bfs解决迷宫游戏。 1.再探迷宫游戏 前面我们已经接触过了迷宫游戏&#xff0c;并且学会了如何使用 DFS 来解决迷宫最短路问题。用 DFS 求解迷宫最短路有一个很大的缺点&#xff0c;需要枚举所有可能的路径&#xff0c;读入的地图一旦很大&#xff0c;可能的搜索方案…...

【Spring原理进阶】SpringMVC调用链+JSP模板应用讲解

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《Spring 狂野之旅&#xff1a;底层原理高级进阶》 &#x1f680…...

23种计模式之Python/Go实现

目录 设计模式what?why?设计模式&#xff1a;设计模式也衍生出了很多的新的种类&#xff0c;不局限于这23种创建类设计模式&#xff08;5种&#xff09;结构类设计模式&#xff08;7种&#xff09;行为类设计模式&#xff08;11种&#xff09; 六大设计原则开闭原则里氏替换原…...

Qt可视化大屏布局

科技大屏现在非常流行&#xff0c;这里分享一下某个项目的大屏布局&#xff08;忘了源码是哪个博主的了&#xff09; 展示 这个界面整体是垂直布局&#xff0c;分为两个部分&#xff0c;标题是一个部分&#xff0c;然后下面的整体是一个layout布局&#xff0c;为另外一部分。 l…...

re:从0开始的CSS之旅 14. 显示模式的切换

1. 两个属性 display 属性可以用于转换元素的显示模式 可选值&#xff1a; block 转换为块元素 inline 转换为行内元素 inline-block 转换为行内块元素 none 不显示元素&#xff0c;并且不占用元素的位置 visibility 属性用于设置元素是否显示 可选值&#xff1a; visible 显示…...

K8S系列文章之 [Alpine基础环境配置]

用户手册&#xff1a;Alpine User Handbook 官方WIKI&#xff1a;Alpine Linux WIKI 安装 安装的实际逻辑是通过 setup-alpine​ 脚本去调用其他功能的脚本进行配置&#xff0c;可以通过 vi 查看脚本。如果某个部分安装失败&#xff0c;可退出后单独再次执行。通过镜像文件&a…...

单页404源码

<!doctype html> <html> <head> <meta charset"utf-8"> <title>简约 404错误页</title><link rel"shortcut icon" href"./favicon.png"><style> import url("https://fonts.googleapis.co…...

MySQL-运维

一、日志 1.错误日志 错误日志是MySQL中最重要的日志之一&#xff0c;它记录了当mysql启动和停止时&#xff0c;以及服务器在运行过程中发生任何严重错误时的相关性息。当数据库出现任何故障导致无法正常使用时&#xff0c;建议首先查看此日志。 该日志是默认开启的&#xf…...

Waymo数据集下载与使用

在撰写论文时&#xff0c;接触到一个自动驾驶数据集Waymo Dataset 论文链接为&#xff1a;https://arxiv.org/abs/1912.04838v7 项目链接为&#xff1a;https://github.com/waymo-research/waymo-open-dataset 数据集链接为&#xff1a;https://waymo.com/open waymo提供了两种…...