Rust学习笔记(1) — 变量
Rust中变量的基本用法:
let x = 3;
可变性
Rust默认的变量是不可变的,如果对定义过的变量重新赋值将会报错:
let x = 3;
x = 5; // 报错:对不可变变量重新赋值
解决方案有两个:
- 重新定义
let x = 3;
let x = 5;
- 定义时声明为值可变
let mut x = 3;
x = 5;
重新用let
定义实际上相当于将之前的变量x
隐藏了,然后用一个同名的变量来赋值,因此可以在重定义的时候改变变量的类型,但是声明为可变变量则不能够改变变量类型:
let x = 3;
let x = 'a'; // ok, x现在的值为字符a
let mut y = 3;
y = 'a'; // 报错:类型不匹配
变量的类型
Rust 是 静态类型语言,也就是说在编译时就必须知道所有变量的类型。
在定义一个变量的时候可以同时显式标明其类型:
let x: i8 = 234;
编译器通常可以推断出数据的类型,只有当推断结果有多种可能时才必须要显式标明。
标量类型代表一个单独的值。Rust 有四种基本的标量类型:整型、浮点型、布尔类型和字符类型。
Rust中整型共分为有符号和无符号等12种类型,其中数字类型默认是i32
:
长度 | 有符号 | 无符号 |
---|---|---|
8-bit | i8 | u8 |
16-bit | i16 | u16 |
32-bit | i32 | u32 |
64-bit | i64 | u64 |
128-bit | i128 | u128 |
arch | isize | usize |
Rust 也有两个原生的浮点数类型,f32
和f64
,分别占 32 位和 64 位。默认类型是f64
。
Rust 中的布尔类型有两个可能的值:true
和false
。Rust 中的布尔类型使用bool
表示。
于是就可以进行数学运算:
let a = 3;
let b = 5;
let c = a + b;
let d = a - b;
let e = a * b;
let f = a / b;
let g = a % b; // 取余
然而Rust的数学运算是不会进行自动类型转换的:
let a = 3;
let b = 5;
let c = a / b; // c = 0
let d = 2.5;
let e = a * d; // 报错:类型不匹配
一个浮点数乘以一个整数竟然说类型不匹配……
可以对类型进行转换以消除该错误:
let a = 3;
let d = 2.5;
let e = (a as f32) * d;
进行比较运算:
let a = 3;
let b = 2.5;
let c: bool = (a as f64) > b; // c的值为true