Rust从入门到精通04-数据类型

Posted IT可乐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rust从入门到精通04-数据类型相关的知识,希望对你有一定的参考价值。

Rust 是 静态类型statically typed)语言,也就是说在编译时就必须知道所有变量的类型。

在 Rust 中,每一个值都属于某一个 数据类型data type),分为两大类:

①、标量(scalar):整型、浮点型、布尔类型、字符类型

②、复合(compound):元祖(tuple)、数组(array)、结构体(struct)

1、标量scalar

每个类型有一个单独的值。

1.1 整型

表示没有小数部分的数字,分为有符号(以 i 开头)和无符号(以 u 开头)整型。

数字类型的默认类型是 i32。

长度

有符号

无符号

8-bit

​i8​

​u8​

16-bit

​i16​

​u16​

32-bit

​i32​

​u32​

64-bit

​i64​

​u64​

128-bit

​i128​

​u128​

arch

​isize​

​usize​

每一个有符号的整型可以储存包含从 -(2^n - 1) 到 2^n - 1 - 1 在内的数字,这里 n 是整型定义的长度。所以 ​​i8​​​ 可以储存从 -2^7到 2^7 - 1 在内的数字,也就是从 -128 到 127。无符号的变体可以储存从 0 到 2^n - 1 的数字,所以 ​​u8​​ 可以储存从 0 到 2^8 - 1 的数字,也就是从 0 到 255。

另外,​​isize​​​ 和 ​​usize​​ 类型依赖运行程序的计算机架构:64 位架构上它们是 64 位的, 32 位架构上它们是 32 位的。

1.1.1 所有数字字面量,可以在任意地方添加下划线_

fn int_test()
//所有数字字面量,可以在任意地方添加下划线_
let x : u32 = 1_2_3;
let y = x + 1;
//打印结果为 124
println!("",y);

1.1.2 字面量可以跟类型后缀,表示数字具体类型

//字面量可以跟类型后缀,表示数字具体类型
fn int_test2()
let x = 123i32;
let y = x + 1;
//打印结果为 124
println!("",y);

1.1.3 直接对整型字面量调用函数

//直接对整型字面量调用函数
fn int_test3()
let x : i32 = 9;
//打印结果为 729
println!("9 power 3 = ",x.pow(3));

1.1.4 整数溢出

Rust 对于整数溢出的处理方式如下: ①、默认情况下,在debug模式下编译器会自动插入整数溢出检查,一旦发生溢出,则会引发 panic; ②、在 release 模式下,不检查整数溢出,而是自动舍弃高位的方式。

1.1.5 如何选择

通常默认类型 i32 即可,它通常是最快的。

1.2 浮点

Rust 有两个原生的 浮点数floating-point numbers)类型,它们是带小数点的数字。是基于 IEEE 754-2008 标准的浮点类型,分别是 ​​f32​​​ 和 ​​f64​​​,分别占 32 位和 64 位。默认类型是 ​​f64​​​,因为在现代 CPU 中,它与 ​​f32​​ 速度几乎一样,不过精度更高。

fn float_test()
//123.0 f32类型
let f1 = 123.0f32;
//0.1 f64类型
let f2 = 0.1f64;

1.3 布尔类型

布尔类型(bool)代表的是“是”和“否”的二值逻辑。它有两个值:

true和false

一般用在逻辑表达式中,可以执行“与”“或”“非”等运算。

fn bool_test()
let x = true;
//取反运算
let y = !x;

//逻辑与,带短路功能
let z = x && y;

//逻辑或,带短路功能
let z = x || y;

1.4、字符类型

字符类型由 char 表示。它可以描述任何一个符合 unicode 标准的字符值。在代码中,单个的字符字面量用单引号包围(不同于字符串用):

1.4.1 4个字节字符

let heart_eyed_cat = 

以上是关于Rust从入门到精通04-数据类型的主要内容,如果未能解决你的问题,请参考以下文章

PHP从入门到精通

Rust从入门到精通10-所有权

Rust从入门到精通09-模式解构

Rust从入门到精通05-语句和表达式

shell从入门到精通(15)双中括号[[]]用法

shell从入门到精通(15)双中括号[[]]用法