这里是关于Rust的数据类型的笔记
整数类型:
- 整数类型没有小数部分
- 例如u32就是一个无符号的整数类型,占据32位的空间
- 无符号整数类型以u开头
- 有符号整数类型以i开头
- 如果在不确定的情况下,可以使用系统的默认数值i32
2.整数溢出:
例如:u8的范围是0-255,如果你把一个u8变量设置为256,那么会发生下面的情况:
- 调试模式下编译,Rust会检查整数溢出,如果发生溢出,程序在运行时就会panic
- 如果在发布模式下(Cargo build –release)编译,Rust不会检查可能导致panic的整数的溢出。
- 如果发生了溢出,Rust会执行环绕操作,256变成了0,257变成了1,以此类推.
浮点类型:
Rust有两种基础的浮点类型,也就是包含小数部分的类型
- f32,32位,单精度
- f64,64位,双精度
- f64是默认类型,因为在现代cpu上f64和f32的速度差不多,而且精度更高
注意:浮点和整数不能放在一起运算,如果运算就会panic。下面是一个例子:
let num1 = 3.2;
let num2 = 3;
let num3 = num1 * num2;
println!("num1是等于{}",num3);
这里num1是一个浮点类型,f64. 而num2是一个整数类型,让这两者想乘。运行下,就发现系统就报错了。
布尔类型:
bool,就是只有两个值,true or false,一般用在判断语句里面。
字符类型:
- Rust语言中,char类型被用来描述语言中最基础的单个字符
- 字符类型的字面值使用引用号,一个数值占用4字节大小。是unicode标量值,可以显示,拼音,中日韩文,零长度的空白字符,甚至是emoji表情。
复合类型:元祖,和数祖
元祖(Tuple)的长度是固定的,一旦创建了,就不能修改了。
创建Tuple只需要在小括号里,将值用逗号分开,并且Tiuple中的每一个位置,对应一个类型。而且,各元素的类型也可以不一样。代码可以参考如下,
let tup:(i32,f64,u8) = (500,6.4,1);
println!("{}, {},{},",tup.0,tup.1,tup.2);
元素结构的代码:destructure
let tup:(i32,f64,u8) = (500,6.4,1);
let (x,y,z) = tup;
println!("{},{},{},”,x,y,z);
那么如何访问Tuple的元素呢?可以使用点标记法,就是上面类似的tup.0
数组
声明一个数组,就是在中括号里,各值用逗号分开.数组中的各个数值必须是同一个类型。
let a = [1,2,3,4,5] // let a:[i32;5] = [1,2,3,4,5]
另外一个声明数组的方式
如果数组的每一个元素都相同,那么可以在中括号指定初始值,然后是一个”;”,紧跟着数组的长度
let a = [3;5] 他就是相当于 let a =[3,3,3,3,3]
那么数组的用处在哪里呢?如果你想让你的数据放在stack上而不是heap上,或者想保证有固定的数量的元素,这是使用数组会更有好处。但是还有一个选项Vector。Vector更加灵活,而且长度可以变。如果你不确定的情况下,更多的是选择Vector
访问数值,month = year[0]
如果访问的索引超出数值的范围,那么编译会通过,但是运行会报错。