rust学习(四)变量与数据类型

news/2025/11/2 15:12:27/文章来源:https://www.cnblogs.com/leedev-blog/p/19180866

创建项目

  • cargo new variables
  • cd cargo

变量

编写代码

fn main() {let  x: i32 = 12;println!("The value of x is: {x}");x = 6;println!("The value of x is: {x}");
}

这段代码如果在RustRover内会出现错误提示:
image

偶然发现可以查看E0384错误.
ps:如果我们想查看错误示例,可以前往rust官网的错误状态码:https://doc.rust-lang.org/error_codes/E0384.html


修改代码如下:
image

可以正常运行。
image

也就是说,rust变量默认不可变,在某种特定情况下,认为变量可变可以声明mut关键字实现。

常量

通过const关键字可以定义一个常量,常量在定义时必须指定值类型。不允许对常量使用mut关键字,并且常量可以在任何作用域内声明,包括全局作用域。
常量只能被声明为常值表达式,不可以是其他任何只能在运行时计算出的值。
声明它的作用域之中,常量在整个程序生命周期中都有效。

image
image

遮蔽

rust允许我们通过let关键字多次重新声明同名的变量,可以不用考虑命名的困扰。
image

第二个变量遮蔽了第一个变量,任何使用该变量名的行为中都会视为是在使用第二个变量,直到第二个变量自己也被遮蔽或第二个变量的作用域结束。


为了书写数据类型的相关代码,我们使用cargo重新创建一个项目

  • cargo new data_types
  • cd data_types

数据类型

rust中每一个值都有一个特定的数据类型
两类数据类型: 标量和复合类型

标量类型

rust中标量类型代表一个单独的值。rust中有四种基本标量类型:整型、浮点类型、布尔类型和字符类型。

整型
整型是一个没有小数的数,可以分为有符号整数和无符号整数。rust中i表示有符号;u表示无符号。以无符号数为例,例如u8表示8位无符号整数,以此类推有u16,u32,u64,u128,usize。usize的值与操作系统有关,如果是32位操作系统那么就是32位,如果是64位操作系统,那么就是64位。有符号数也是类似i16,i32,i64,i128,isize.默认声明一个整型变量它的类型是i32
在计算机中,有符号数都采用补码的形式表示。
image

note:对于表示范围(如8位无符号整数的表示范围为0255;8位有符号整数的表示范围为-128+127),如果学过计算机组成原理,这部分就十分简单了。

浮点类型
提到浮点数,计算机组成最经典的就是IEEE-754标准。现代计算机中浮点数默认都采用此标准。
rust中的浮点类型有f32f64,默认类型是f64
f32 是单精度浮点数,f64 是双精度浮点数。对应计算机组成原理里面floatdouble类型。

f32为例,32位中第1位为符号位,中间8位数为阶码(移码表示,移码偏移量为127),后面23位数为尾数(原码表示)。
ps:这是复习考研时间的内容,由于这里学的是rust就不过多阐述了嘻嘻!

image


布尔类型
rust中布尔类型的值类型关键字为bool。值有两个truefalse
image

字符类型
Rust 的 char 类型是语言中最原始的字母类型。用单引号声明 char 字面值,而与之相反的是,使用双引号声明字符串字面值
image

复合类型

复合类型可以将多个值组合成一个类型。rust的组合类型有元组tuple和数组array

元组
元组长度固定,一旦声明其长度不会增大也不会缩小。使用包含在圆括号中的逗号分隔的值列表来创建一个元组。元组中的每一个位置都有一个类型,而且这些不同值的类型也不必是相同的。
image

数组
rust中数组内每个元素的类型必须一致,且数组的长度是固定的。

通过let来定义数组: let variable_name: [data_type,size] = [element1,element2,...]

访问数组元素通过数组下标来实现,和其它语言一样,数组下标默认从0开始。

    // 数组中每个元素的值类型都必须一致// rust中数组的长度是固定的// 数组的类型:[data_type;size] -->  [i32; 5]  i32表示每个元素的类型,分号之后的数字代表数组内的元素个数let _arr_data: [i32; 5] = [1, 2, 3, 4, 5];// 确保总是有固定数量的元素时,数组非常有用let months: [&str; 12] = ["January","February","March","April","May","June","July","August","September","October","November","December",];// 通过数组下标访问数组元素,下标从0开始let jan = months[0];println!("The value of jan is: {jan}");// 通过在方括号中指定初始值加分号再加元素个数的方式来创建一个每个元素都为相同值的数组let _arr = [3;4]; // 变量名为 arr 的数组将包含 4 个元素,这些元素的值最初都将被设置为 3

由于参阅的是书籍内容,示例并没有写太多,需要更多例子求助AI也可以嘿嘿!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/953633.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

构建现代Web应用:使用React框架打造单页面应用

1. React简介 React是一个用于构建用户界面的JavaScript库,由Facebook开发并维护。React的设计理念是将复杂的UI分解成独立的组件,这样可以更方便地管理和复用代码。此外,React还通过虚拟DOM技术提高了应用的性能。…

基于有限体积法(FVM)的MATLAB流体力学求解程序

一、基础框架代码(二维稳态不可压缩流动) %% 初始化参数 Lx = 0.1; Ly = 0.01; % 计算域尺寸 Nx = 50; Ny = 20; % 网格数 dx = Lx/Nx; dy = Ly/Ny;% 物理参数 rho = 1.2; mu = 1.8e-5; nu = mu/rho; % 空气物性 …

证明:割空间以及环空间的直和为边空间当且仅当图的生成树个数为偶数

一个线性代数的证明。命题:对于连通图 \(G=(V,E)\),记其割空间为 \(A\),环空间为 \(B\),边空间为 \(E\),则 \(A\oplus B=E\) 当且仅当图 \(G\) 的生成树个数为奇数。 证明: 由于 \(\dim A+\dim B=\dim E\),所以…

langgraph-reflexion

langgraph-reflexion https://github.com/fanqingsong/langgraph-reflexion/tree/main Implementation of a sophisticated Reflexion agent using LangGraph and LangChain, designed to generate high-quality respo…

WC 2026 备战记录

CSP 2025 炸了,意识到 CTT 再炸就没有 WC 玩了,很生气! 记录了日常训练中的一些题。 目录

面向院区病房的空间智能体新范式:下一代病房框架研究(上)

面向院区病房的空间智能体新范式:下一代病房框架研究(上)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Conso…

JSR 303 常用注解及示例

JSR 303 常用注解及示例JSR 303 常用注解及示例 ✅ JSR 303 常用注解及示例注解 作用 示例@NotNull 值不能为 null @NotNull(message = "ID不能为空")@NotBlank 字符串不能为空(非 null 且去除空格后长度 &…

实用指南:用 Go 并发优化用户中心 API:goroutine 和 errgroup 的实战魔法

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

MySQL02 函数

MySQL02 函数函数 字符串函数调用方式:SELECT F(x) 或和其他语法结合使用 update user set id = lpad(id,4,0);一般来说都是更新,先选中表,再对对象调用函数,用等于号连接。 数值函数 CEIL(X)//向上取整 FLOOR(X)/…

夸克网盘免费领取1TB空间的方法

一、活动时间 2025年01月01日 ~ 2026年12月31日 二、面向用户 夸克 App 新用户,即在手机端和 PC 端从未使用手机号注册过夸克账号的用户只安装过夸克客户端但从未注册夸克账号的用户,也可获得本次新用户活动奖励; …

前端三剑客——javascript函数作用域与内置函数

大纲 :1.js代码执行流程2.函数的声明与匿名函数自执行:普通函数/匿名函数及其自执行普通函数/匿名函数/箭头函数/2者区别3.var和let区别与函数作用域:var和let作用域区别匿名函数/箭头函数this指向4.内置函数js代码执…

完全背包内外循环是否能对调?

结论:完全背包内外层循环不可以对调之前一直认为完全背包内外层循环可以互相对调,可能也是由于某一些题目数据的巧合吧,现在碰到一道题目帮我纠正了 题目 纠正 内外层循环对调,无非就是先物品后容积,还有就是先容…

浅谈ASP.NET Core中间件实现分布式 Session

浅谈ASP.NET Core中间件实现分布式 Session浅谈ASP.NET Core中间件实现分布式 Session 1.1. 中间件原理 1.1.1. 什么是中间件 中间件是段代码用于处理请求和响应,通常多个中间件链接起来形成管道,由每个中间件自己来…

.NET周刊【10月第3期 2025-10-19】

国内文章 史诗级警报:ASP.NET Core 被曝 CVSS 9.9 分漏洞,几乎所有.NET 版本无一幸免! https://www.cnblogs.com/netry/p/19147223/CVE-2025-55315 2025 年 10 月的微软补丁星期二更新中,ASP.NET Core 漏洞 CVE-20…

2025 年 11 月快速卷帘门厂家最新推荐,聚焦高端定制需求与全案交付能力!

当前快速卷帘门应用场景日益多元,高端定制需求与全案交付能力成为采购关键。据行业权威门窗协会 2025 年 10 月调研显示,近 42% 的采购方因厂家定制能力不足,导致产品与场景适配偏差,额外改造成本增加 30%;而交付…

【大模型应用开发】之调用大模型

调用大模型 大模型接口规范 大模型接口说明大模型开发是通过访问模型对外暴露的API接口,实现与大模型的交互。 大多数大模型都遵循OpenAI接口规范,是基于Http协议的接口。因此请求路径、参数和返回值信息都是类似的。…

11/2

找第k小的数的分治算法描述:先选最右元素作基准,partition 函数将数组分区,小于等于基准的放左,大于的放右,返回基准位置 p。find 函数递归:若 p 左元素数 c 等于 k,返回 a [p];k 小于 c 则在左分区找 k;否则…

2025 年 11 月快速卷帘门厂家最新推荐,技术实力与市场口碑深度解析!

快速卷帘门行业的技术迭代与市场反馈,是采购决策的关键依据。据行业权威门窗协会 2025 年 10 月发布的调研数据,技术落后导致的产品淘汰率达 32%,而市场口碑差的品牌客户复购率不足 20%。为精准筛选优质厂家,本次联…