数值类型
整形
长度 | 有符号类型 | 无符号类型 |
---|---|---|
8 位 | i8 | u8 |
16 位 | i16 | u16 |
32 位 | i32 | u32 |
64 位 | i64 | u64 |
128 位 | i128 | u128 |
视架构而定 | isize | usize |
浮点型
let a:f32=9.0;
let b:f64=8.0;
//默认f64
notice
溢出:几乎所有语言都很让人头疼的问题,只能小心为妙了。
浮点数的精度问题:和c/c++一样,由于存储时的误差,不要试图进行比较。
这块感觉很有意思,个人研究的方向也能用于这块(提升精度,防止误差),以后可以深入研究下.。
range
for i in 'a'..='z' {
println!("{}",i);
}
牛啊,真的很好用。(有无等于号决定了后面那个包含与否)
感觉比python还好用😂
声明类型的几种方式
let twenty = 20;
// 让编译器推断,默认i32
let twenty_one: i32 = 21;
// :声明
let twenty_two = 22i32;
// 通过类型后缀的方式进行类型标注:22是i32类型
let twenty_two = 22_i32;
As转换类型
只有相同的类型才能进行比较,赋值等操作
fn main() {
let a = 3.1 as i8;
let b = 100_i8 as i32;
let c = 'a' as u8; // 将字符'a'转换为整数,97
println!("{},{},{}",a,b,c)
}
可以用as转换
bool/char/()
char:Rust 的字符不仅仅是 ASCII
,所有的 Unicode
值都可以作为 Rust 字符,包括单个的中文、日文、韩文、emoji 表情符号等等,都是合法的字符类型。
每个char占四个字节。
():单元类型,可以作为一个值用来占位,但是完全不占用任何内存。
语句和表达式
表达式总要返回值。语句没有返回值。
attention:
6
也是表达式,因为返回6
表达式可以对变量赋值,或者在函数体或作用域中作返回值。但注意不能有句末的分号。
如下,在一个作用域中返回x+1,在将值赋值给y
fn main() {
let y = {
let x = 3;
x + 1
};
println!("The value of y is: {}", y);
}
如下,在一个函数中返回x+y
fn add_with_extra(x: i32, y: i32) -> i32 {
let x = x + 1; // 语句
let y = y + 5; // 语句
x + y // 表达式
}fn main() {
let x=10;
let y=20;
println!("{}",add_with_extra(x, y));
}
表达式如果不返回任何值,会隐式地返回一个 ()
// 使用两种方法让代码工作起来
fn main() {
let v = {
let mut x = 1;
x += 2
};
assert_eq!(v, ());
}
这里x+=2是个语句(没有返回值),所以没有返回值,返回()
函数
- 类型:强类型,必须标注参数和返回值的类型
- 位置:函数的位置可以随便放,Rust 不关心我们在哪里定义了函数,只要有定义即可。(这点和其他语言较大区别)
- 返回值:可以直接用不带;的表达式返回(但只能在函数句末),也可以用return返回
- 返回():
- 函数没有返回值,那么返回一个
()
- 通过
;
结尾的语句返回一个()
- 函数没有返回值,那么返回一个
: