数据类型
Rust是静态类型语言,在编译期所有的变量类型都必须确定下来。按理说应该给每个变量都声明类型,不过由于编译器的强大推断能力,有的时候可以不声明,让他自己推断,当然也有推断不了的,就要我们自己指定。
这个guess没指定类型,就会报错,parse可以转换多种类型,不指定就无法确定究竟是哪种类型。在变量后加冒号指定类型
简单类型
1. 整型
字面值:
十进制:34_134
十六进制:0xff
八进制:0o88
二进制:0b10101100
字符(u8):b'A'
按照有符号、无符号和长度分类,如32位有符号:i32,8位无符号:u8,默认是i32类型。有两个特殊的isize和usize是根据机器架构的位数确定的,如果是64位机器他就是64位。
整型溢出编译会通不过,如果使用#[allow(arithmetic_overflow)]使其通过编译,则不加--release运行会panic,加--release会轮回(wrap),像首尾相接的环形数列,比如u8最大255+1会等于0。
标准库还提供了显示处理溢出的方法
wrapping_*:像上面说的--release版
checked_*:溢出返回None
overflowing_*:返回值+是否溢出
saturating_*:溢出返回最大值
如255u.wrapping_add(1)结果就是0。
2. 浮点型
分为f32和f64,默认是f64。浮点和整型运算有+-*/%
3. 布尔
bool表示,取值为true/false。
4. 字符
char类型是unicode编码值,4个字节,有些情况下并不是我们认为的可视字符。
符合类型
1. 元组
由一组值组成,类型可以不同,但是个数不可修改个数。可以通过序号访问
也可以解构后,访问x、y和z
2. 数组
也是由一组值组成,但是类型必须相同,且个数不可修改。需要存一些固定数量的值时可以使用,值都在栈上,速度会很快。使用下标可以访问,出界了会panic。
定义方法有几种,正常:
声明类型:
多个相同值: