Rust编程学习(一): 变量与数据类型

[复制链接]
发表于 2025-9-23 07:12:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我们先从Rust根本的变量声明界说与数据类型开始学习,了解这门语言根本特性。
1 变量与可变性


  • 变量声明
    变量声明以let关键字开头,x为变量名,变量名后紧跟冒号和数据类型,但是rust编译器有主动推导变量类型的功能,可以省略显式的声明。
  1. let x:i32 = 10;
  2. //等价于
  3. let x = 10;
复制代码

  • 默认变量是不可变的 只读状态
  1. let x = 10;
  2. x = 20;//错误❌ 不能对 不可变 变量进行赋值
复制代码

  • 可变变量
    mut关键字将变量x声明为可变变量,即x为可写状态
  1. let mut x=10;//x可变
  2. x = 20; //修改变量值
复制代码

  • 变量遮蔽(shadow)
    Rust允许在同一个代码块中声明一个与之前已声明变量同名的新变量,新变量会遮蔽之前的变量,即无法再去访问前一个同名的变量,如许就实现了变量遮蔽(类似于覆盖)。
  1.   fn main() {
  2.       let x = 3;
  3.       let x = x * 2;
  4.       println!("x: {}", x); //输出:x:6
  5.       let x = "Hello, Rust!";
  6.       println!("x: {}", x);//输出:Hello, Rust!
  7.   }
复制代码
变量遮蔽的实质是通过let关键字声明了一个新的变量,只是名称可巧与前一个变量名相同而已,但它们是两个完全差异的变量,处于差异的内存空间,值可以差异,值的类型也可以差异。
2 常量界说

常量是指绑定到一个标识符且不允许改变的值,一旦界说后就没有任何方法能改变其值了。常量名通常是大写字母,且必须指定常量的数据类型
  1. const MAX_NUM: u32 = 1024;
复制代码
常量与不可变变量对比:
1)常量声明利用const关键字,且必须注明值的类型。
2)常量不能遮蔽,不能重复界说。
3)常量可以在任何作用域中声明,包括全局作用域。
4)常量只能被赋值为常量表达式或数学表达式,不能是函数返回值,或是其他在运行时才气确定的值。
3. 根本的数据类型

Rust的根本数据类型有整数类型、浮点数类型、布尔类型、字符类型、范围类型等。
1. 整数类型

长度有符合无符号8位i8u816位i16u1632位i32u3264位i64u64128位i128u128archisizeusize 界说与利用
  1. let integer1: u32 = 17;       // 显式类型声明
  2. let integer2 = 17u32;         // 类型后缀声明
  3. let integer3 = 17;            // 默认i32类型
  4. let integer4: u32 = 0b10001;  // 二进制
  5. let integer5: u32 = 0o21;     // 八进制
  6. let integer6: u32 = 0x11;     // 十六进制
  7. let integer7 = 50_000;        // 数字可读性分隔符_
复制代码
为了方便阅读数值较大的数字,Rust允许利用下划线“_”作为假造分隔符来对数字举行可读性分隔。好比,为了进步50000的可读性,可以写成50_000。Rust在编译时会主动移除数字可读性分隔符“_”。
2. 浮点数类型

   f32:单精度浮点数,小数点后至少有6位有用数字。
f64:双精度浮点数,小数点后至少有15位有用数字。 界说与利用:
  1. let float1: f32 = 1.1;        // 显式类型声明
  2. let float2 = 2.2f32;          // 类型后缀声明
  3. let float3 = 3.3;             // 默认f64类型
  4. let float4 = 11_000.555_001;  // 数字可读性分隔符_
复制代码
3. bool(布尔)类型

Rust利用bool来声明布尔类型的变量,布尔类型只有两个大概的取值,即true或false。 比方:
  1. let t: bool = true;           // 显式类型声明
  2. let f = false;                // 隐式类型声明
复制代码
4. 字符类型

Rust利用UTF-8作为底层的编码。字符类型代表的是一个Unicode标量值(Unicode Scalar Value),包括数字、字母、Unicode和其他特别字符。这个字符类型区别于C/C++中的界说,每个字符占4个字节。
  1. let c = 'z';
  2. let c1 = '✅';
复制代码
5. 范围类型

范围类型常用来天生从一个整数开始到另一个整数竣事的整数序列,有左闭右开和全闭两种情势,好比(1..5)是左闭右开区间,表现天生1、2、3、4这4个数字;(1..=5)是全闭区间,表现天生1、2、3、4、5这5个数字。
  1. fn main() {
  2.    print!("1-5: ");
  3.    
  4.    for i in 1..5 {
  5.        print!("{} ", i);
  6.    }
  7.    println!();
  8. }
复制代码
4 demo测试

编写一个简单的demo巩固上面的知识点。
下令:cargo new demo1_datatype创建工程。

测试代码:
  1. fn main() {
  2.     let x = 5; //默认类型i32
  3.     let x = x+1; //遮蔽x=5,此时x=6
  4.     println!("遮蔽变量 x={}", x);
  5.     let mut y = 5;
  6.     y += 10; //可变变量
  7.     println!("可变变量 y={}", y);
  8.     const MAX_VALUE:i32=100*32; //常量
  9.     println!("MAX_VALUE={}", MAX_VALUE);
  10.     let z:char = '》'; //字符类型
  11.     println!("字符类型 z={}, size={}字节", z, std::mem::size_of::<char>());
  12.     let f = false; //布尔类型
  13.     println!("布尔类型 f={}", f);
  14.     for i in 1..=5 { //for循环  范围类型
  15.         print!("{} ", i);
  16.     }
  17.     println!("");
  18. }
复制代码
编译输出:


5 小结

我们先从底子语法开始学习,循规蹈矩把握它的精华。此处我也给各人保举一下rust官方教程链接:Rust 步伐筹划语言 - Rust 步伐筹划语言 中文版
我是小C,接待各人一起交流学习~~~
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表