数据类型
整数型(Integer)
整数型简称整型,符号分为一下种类:
位长度 | 有符号 | 无符号 |
8-bit | i8 | u8 |
16-bit | i16 | u16 |
32-bit | i32 | u32 |
64-bit | i64 | u64 |
128-bit | i128 | u128 |
arch | isize | usize |
size 和 usize 两种整数类型是用来衡量数据大小的,它们的位长度取决于所运行的目标平台,如果是 32 位架构的处理器将使用 32 位位长度整型
整数的表述方法有以下几种
进制 | 例 |
十进制 | 98_222 |
十六进制 | 0xff |
八进制 | 0o77 |
二进制 | 0b1111_0000 |
字节(只能表示 u8 型) | b'A' |
很显然,有的整数中间存在一个下划线,这种设计可以让人们在输入一个很大的数字时更容易判断数字的值大概是多少
浮点数型(Floating-Point)
Rust与其它语言一样支持32位浮点数(f32)和64位浮点数(f64)
默认情况下, 64.0将表示64位浮点数, 因为现代计算机处理器对两种浮点数计算的速度几乎相同, 但64位浮点数精度更高
fn main() { let x = 2.0; // f64 let y: f32 = 3.0; // f32 }
数学运算
fn main() { let sum = 5 + 10; // 加 let difference = 95.5 - 4.3; // 减 let product = 4 * 30; // 乘 let quotient = 56.7 / 32.2; // 除 let remainder = 43 % 5; // 求余 }
自运算
sum += 1; //等同于 sum = sum + 1
注意:Rust不支持 ++ 和 --, 因为这两个运算符出现在变量的前后会影响代码可读性, 减弱了开发者对变量改变的意识能力
布尔型
布尔型用 bool 表示,值只能为 true 或 false
字符型
字符型用 char 表示
Rust的char类型大小为4个字节, 代表Unicode标量值, 这意味着它可以支持包括中文在内的非英文字符, 甚至表情符号和零宽度空格在Rust中都是有效的char值
Unicode值的范围从U+0000 ~ U+D7FF, 和U+E000 ~ U+10FFFF(包括两端)
但是"字符"这个概念并不存在于Unicode中,因此您对"字符"是什么的直觉可能与Rust中的字符概念不匹配
所以一般推荐使用字符串储存UTF-8文字(非英文字符尽可能地出现在字符串中)
注意:由于中文文字编码有两种(GBK 和 UTF-8), 所以编程中使用中文字符串有可能导致乱码的出现
这是因为源程序与命令行的文字编码不一致, 所以在Rust中字符串和字符都必须使用UTF-8编码,否则编译器会报错
复合类型
元组
元组用一对()包括的一组数据, 可以包含不同种类的数据
let tup:(i32, f64, u8) = (500, 6.4, 1); println!("tup.0 等于 {}" , tup.0); println!("tup.1 等于 {}" , tup.1); println!("tup.2 等于 {}" , tup.2); let (x, y, z) = tup; println!("x等于 {}" , x); println!("y等于 {}" , y); println!("z等于 {}" , z); //输出: //tup.0 等于 500 //tup.1 等于 6.4 //tup.2 等于 1 //x等于 500 //y等于 6.4 //z等于 1
数组
数组用一对[]包括的同类型数据
语法:let variable_name:[dataType;size] = [value1,value2,value3, ... ];
let a = [1, 2, 3, 4, 5]; //a 是一个长度为 5 的整型数组 let b = ["January", "February", "March"]; //b 是一个长度为 3 的字符串数组 let c: [i32; 5] = [1, 2, 3, 4, 5]; // c 是一个长度为 5 的 i32 数组 let d = [3; 5]; // 等同于 let d = [3, 3, 3, 3, 3]; // 数组访问 let first = a[0]; //结果:1 let second = a[1]; //结果:2 //数组赋值 a[0] = 123; //错误:数组 a 不可变 let mut a = [1, 2, 3]; a[0] = 4; //正确