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

340 阅读4分钟

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


0x00 回顾

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

0x01 整数类型(Integer)

下表是Rust中常见的整型:

长度有符号无符号
8-biti8u8
16-biti16u16
32-biti32u32
64-biti64u64
128-biti128u128
archisizeusize

每一个变体都存在有符号无符号两种数据,其中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 时会发生什么呢?尝试编译下,会发现报下面的错误。

这被称为 整型溢出。当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中定义浮点数时必须存在小数点,它也是区分整型和浮点数的唯一标准,不得将整型赋值给浮点数。如下图,编译器会提示错误,编译也不会通过。

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各数据类型之间不能隐式的相互转换。但是它们之间依然是可以相互转换的,需要用到其它方法,下节也会介绍。感兴趣的可以提前查下资料哦~

0x06 本节源码

006/data_type · StudyRust - 码云 - 开源中国 (gitee.com)

下节预告——了解字面量和常用的运算符,学会使用Rust来做一些简单的运算。