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

【rust】| 02——语法基础_变量(不可变?)和常量

系列文章目录
【rust】| 00——开发环境搭建
【rust】| 01——编译并运行第一个rust程序
【rust】| 02——语法基础_变量(不可变?)和常量


文章目录

  • 1. 变量
    • 1.1 变量的定义
    • 1.2 试验变量的不可变特性
  • 2. 常量
    • 2.1 常量的定义
  • 3. 覆盖(同名变量)
    • 3.1 修改已定义变量的数据类型
    • 3.2 1个变量当多个用

1. 变量

  通常变量用作存储值。在其他编程语言如C/C++等中变量 默认状态是可以变的。而Rust语言 其拥有安全和简单并发的特性,它的变量默认情况下是 不可变的。让我们深入了解 它所拥有的特性吧。

1.1 变量的定义

rust中变量的定义方式:
关键字let + 变量名;	         // 定义 不可变变量(默认)
关键字let + 关键字mut + 变量名; // 定义 可变变量

在这里插入图片描述
注:rust中 通过let关键字定义变量 可以根据值 自动识别数据类型

1.2 试验变量的不可变特性

1、先定义一个 不可变变量并赋值let a = 10;
2、修改变量let a = 77;
3、编译看结果

在这里插入图片描述
在这里插入图片描述
可以看到编译报错了 很清楚的提示了 不能修改不可变变量的值
不可变变量名 前多加个 mut 关键字 让其成为可变变量 eg: let mut a=10;

2. 常量

 常量:不可修改的变量。
 在C/C++中常量的定义 关键字const + 数据类型 + 常量名 , 可是这样定义的常量是真正意义的常量吗。结果是我们可以通过操作地址的方式修改了它。呜呜呜 大骗子。
 在rust中定义的常量 也是用 const 。 是正真的常量哦,常量的意义和前面 let定义的不可变变量很相近 但还是是有细微差别的。
区别如下:

const定义的常量let定义的不可变变量
1、始终不可变 不可加mut默认不可变 加mut可变
2、定义时需要 +数据类型无需数据类型 自动识别
3、只能做常量表达式

注意:定义常量时注意这些事项哦

2.1 常量的定义

在rust中定义常量
const + 常量名: + 数据类型 = 值;注意事项:
1、常量名——约定为 大写字母可加下划线/数字
2、常量名后面有 : 分号
2、需要定义数据类型
tips:rust中的数据类型后面讲哈

在这里插入图片描述

错误例子如下
在这里插入图片描述

3. 覆盖(同名变量)

 在rust中 可以定义同名变量。后面定义的可以覆盖前面定义的变量,如果后者(覆盖者)变量的作用域结束 则前者(被覆盖的变量)重新存在。变量的生命周期决定了谁才是命大的哪一个。只可以变量哦(常量不可以)。

下面通过几个例子了解覆盖的应用场景:

3.1 修改已定义变量的数据类型

在这里插入图片描述
运行结果
在这里插入图片描述
分析

可以看到 发生了2次覆盖 变量的类型也发生了改变 在定义变量是系统自动识别(根据后面的值)到是整型,通过覆盖我们实现了重新定义类型。
在C/C++中我们需要 定义不同类型变量存储不同数据
而在rust语言中 可以通过覆盖的方式实现用一个变量存储不同类型数据
作用:改变变量类型

3.2 1个变量当多个用

在这里插入图片描述
运行结果

A班的人数—— 7
老师的人数——100
语文成绩————111.11
谁笑到了最后 哈哈哈——7

分析

可以看到 1的生命周期最长笑到了最后 生命周期限制着变量

http://www.lryc.cn/news/66241.html

相关文章:

  • JavaScript实现在键盘输入按键,浏览器进行显示的代码
  • 精炼计算机网络——物理层(二)
  • ChatGPT直接访问,Edge浏览器-免费ChatGPT保姆级教程
  • 1010. 总持续时间可被 60 整除的歌曲
  • 基于Spring Boot的婚恋系统
  • unity愤怒的小鸟学习制作(一)
  • 建筑专业可以转行学云计算吗?
  • 网络安全:namp扫描工具
  • java错题总结(19-21页)
  • 总结846
  • [ubuntu][原创]ubuntu上安装stable-diffusion-webui
  • 【数组排序算法】
  • 制造企业选择库存管理条码工具需要关注哪些点?
  • SPI配置
  • 给你们讲个笑话——低代码会取代程序员
  • Kotlin的出现无疑是为了超越Java而存在
  • 基于C#开发 B/S架构的实验室管理系统 云LIS系统(MVC + SQLserver + Redis)
  • Webpack5有哪些更新?
  • 前端Vue
  • SpringCloud 分布式事务组件之Seata
  • @TransactionalEventListener的使用和实现原理
  • 没计算机基础,就是评职称用的,软考中级哪个好考啊?
  • 数字化战略,如何解读企业财务报表
  • JAVA14新特性
  • Google SEO优化的10大误区
  • .netCHARTING 10.5 dotnetcharting Crack
  • 单元,集成,系统,验收,回归测试
  • 云计算适合大专生学吗?
  • 【系统集成项目管理工程师】项目风险管理
  • Quartz2D之Path使用初步