【RUST学习日记】第6课 基本数据类型

简介: 【RUST学习日记】第6课 基本数据类型

0x00 回顾


上一节讲解了变量和常量,主要了解了他们的区别。也初步感觉到在Rust中对安全性。这节咱们讲解常用的一些基本数据类型。数据类型是Rust作为强类型的静态编译语言的基础。Rust常见的基本数据类型有整数类型,浮点数类型,字符类型,布尔类型等。


0x01 整数类型(Integer)


下表是Rust中常见的整型:


image.png


每一个变体都存在有符号无符号两种数据,其中i(signed int的缩写)表示有符号,u(unsigned int的缩写)表示无符号。每一个有符号的变体可以储存包含从 -(2n - 1) 到 2n - 1 - 1 在内的数字,这里 n 是变体使用的位数。所以 i8 可以储存从 -(27) 到 27 - 1 在内的数字,也就是从 -128 到 127。无符号的变体可以储存从 0 到 2n - 1 的数字,所以 u8 可以储存从 0 到 28 - 1 的数字,也就是从 0 到 255。另外,isizeusize 类型依赖运行程序的计算机架构:64 位架构上它们是 64 位的, 32 位架构上它们是 32 位的。


示例代码如下:

// 默认 i32 类型
    let a = 20;
    // 声明无符号整数 类型声明
    let b: u32 = 300;
    // 后缀声明
    let c = 4000u32;


整型溢出(Integer Overflow)


let mut d : i8 = 127;
    d = 128;

可变变量d是一个 i8 类型的整数,它的取值范围是 [-128,127]。那么当你将其修改为 128 时会发生什么呢?尝试编译下,会发现报下面的错误。


0a2653c851af460fa595bd959398a8f1.png


这被称为 整型溢出。当Rust在编译时,Rust会检查这类问题并使程序 PanicPanic这个术语被 Rust 用来表明程序因错误而退出。关于Panic会在后续章节介绍。在这里先了解即可。


0x02 浮点数(Float)


说白了浮点数就是通常我们所说的小数,如:1.9-99.99等。浮点数又分为f32f64两种类型。


  • f32 又称为 单精度浮点型。小数点后至少有6位有效数字。
  • f64 又称为 双精度浮点型,如果声明变量时不指定类型, 则是Rust 默认的浮点类型。小数点后至少有15位有效数字。

示例代码如下:

// 默认类型
    let f1 = 0.0;
    // 类型声明
    let f2: f32 = 54.0;
    // 后缀声明
    let f3 = 99.999f32;

Rust中定义浮点数时必须存在小数点,它也是区分整型和浮点数的唯一标准,不得将整型赋值给浮点数。如下图,编译器会提示错误,编译也不会通过。


0a2653c851af460fa595bd959398a8f1.png


0x03 布尔型(Bool)


哈哈,这个很简单了。就俩值,不是true就是false。一般用于逻辑判断中。示例代码如下:

// 默认不声明类型
    let g = true;
    // 声明类型
    let h : bool = false;


0x04 字符类型(Char)


Rust的底层编码是UTF-8,与常见的C,C++,Java等语言使用ASCII编码不同。Rust 中的 字符数据类型 包含了 数字字母Unicode其它特殊字符。其每个字符占4个字节,由单引号来定义。字符类型代表的是一个Unicode标量值(Unicode Scalar Value)。Unicode 编码的标量值的范围从 U+0000U+D7AF(包含), U+E000U+10FFFF(包含),了解更多关于Unicode的信息请前往百度百科。


示例代码如下:

// 默认不声明类型
    let i = 'i';
    // 声明类型
    let j: char = 'j';
    // emoji表情
    let k = '';
    // 汉字
    let l = '中';
    // 藏文
    let m = 'ག';


0x05 小结


本节了解了Rust的常见数据类型,有整数型,浮点型,布尔型,字符型。得知Rust各数据类型之间不能隐式的相互转换。但是它们之间依然是可以相互转换的,需要用到其它方法,下节也会介绍。感兴趣的可以提前查下资料哦~ 

相关文章
|
6月前
|
存储 Rust 程序员
Rust中数据类型详解:从整数到字符串
本文将详细解析Rust编程语言中的基本数据类型,包括整数、浮点数、布尔值、字符与字符串。我们将深入探讨每种数据类型的特性、使用场景以及它们在Rust中的实现方式,帮助读者更好地理解和应用这些基础元素。
|
10天前
|
存储 Rust 网络协议
【Rust学习】10_定义枚举
在这一章我们学习 枚举(enumerations),也被称作 enums。枚举允许你通过列举可能的 成员(variants) 来定义一个类型。首先,我们会定义并使用一个枚举来展示它是如何连同数据一起编码信息的。接下来,我们会探索一个特别有用的枚举,叫做 Option,它代表一个值要么是某个值要么什么都不是。然后会讲到在 match 表达式中用模式匹配,针对不同的枚举值编写相应要执行的代码。最后,我们将学习 if let 结构,另一个简洁方便处理代码中枚举的结构。
26 7
|
1月前
|
Rust 算法 安全
学习Rust
【10月更文挑战第13天】学习Rust
52 8
|
1月前
|
Rust 安全 算法
Rust的学习
【10月更文挑战第12天】Rust的学习
28 2
|
1月前
|
Rust 算法 安全
如何学习Rust编程?
【10月更文挑战第12天】如何学习Rust编程?
41 1
|
1月前
|
Rust API
【Rust学习】09_方法语法
结构体让你可以创建出在你的领域中有意义的自定义类型。通过结构体,我们可以将相关联的数据片段联系起来并命名它们,这样可以使得代码更加清晰。在 impl 块中,你可以定义与你的类型相关联的函数,而方法是一种相关联的函数,允许您指定结构体的实例具有的行为。 但是结构体并不是创建自定义类型的唯一方式:让我们转向 Rust 的 enum 功能,将另一个工具添加到你的工具箱中。
17 0
|
2月前
|
Rust 索引
【Rust学习】08_使用结构体代码示例
为了了解我们何时可能想要使用结构体,让我们编写一个计算长方形面积的程序。我们将从使用单个变量开始,然后重构程序,直到我们改用结构体。
92 2
|
2月前
|
存储 Rust 编译器
【Rust学习】07_结构体说明
**struct**或 ***structure***是一种自定义数据类型,允许您命名和包装多个相关的值,从而形成一个有意义的组合。如果您熟悉面向对象的语言,那么**struct**就像对象中的数据属性。在本章中,我们将比较和对比元组与结构体,在您已经知道的基础上,来演示结构体是对数据进行分组的更好方法。
25 1
|
3月前
|
存储 Rust 安全
【Rust学习】06_切片
所有权、借用和切片的概念确保了 Rust 程序在编译时的内存安全。Rust 语言提供了跟其他系统编程语言相同的方式来控制你使用的内存,但拥有数据所有者在离开作用域后自动清除其数据的功能意味着你无须额外编写和调试相关的控制代码。
26 1
|
2月前
|
Rust Linux Go
Rust/Go语言学习
Rust/Go语言学习