Rust学习三 rust的数据类型

本文介绍了Rust编程语言中的数据类型,包括标量类型和复合类型。标量类型涵盖整型、浮点型、布尔型和字符型,详细讨论了各自的特性和使用。复合类型则讲解了元组和数组,特别是数组的固定长度特性及其安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据类型

  1. rust的两种数据类型子集:标量类型和复合类型

  2. rust是静态语言,这表明rust在编译时必须清楚的知道所有变量的类型

一 Scalar Types 标量类型

4种标量类型: 整型,浮点型,布尔型, 字符型

1. Integer Types 整型

整型类型分为有符号整型和无符号整型

LengthSignedRange(-2n-1 to 2n-1 - 1)UnsignedRange(0 to 2n - 1)
8-biti8-27 ~ 27 -1 (-128 ~ 127)u80 ~ 28 -1 (0 ~ 255)
16-biti16-215 ~ 215 -1u160 ~ 216 -1
32-biti32-231 ~ 231 -1u320 ~ 232 -1
64-biti64-263 ~ 263 -1u640 ~ 264 -1
archisize取决于计算机类型的体系结构usize取决于计算机类型的体系结构

arch 类型的 isize和usize类型取决于程序运行的计算机类型:如果是64位体系结构,则为64位; 如果是32位体系结构,则为32位

除了字节字面量之外,所有的数字字面量都允许使用类型后缀,如57u8, 此外可以使用_ 作为可视分隔符。如: 1_000, 100_0000.

Number literalsExample
Decimal98_222
Hex0xff
Octal0o77
Binary0b1111_0000
Byte(u8 only)b’A’

如果我们不确定使用哪种类型的整型,一般rust会默认选择最优的类型:i32。这种类型运行速度最快,即使是64位的操作系统。而usize/isiz主要是在为某种集合建立索引的情况下使用。

2. Floating-Point Types 浮点型

  1. rust主要有单精度浮点和双精度浮点这两种浮点类型, 分别是f32f64对应代表32位单精度和64位双精度。

  2. rust默认使用f64, 虽然目前的CPU运行32位与64位浮点型的速度及无差别,但是64位能捕获更高的精度。

3. The Boolean Type 布尔类型

rust的布尔类型是: ture 和 false

4. The Character Type 字符类型

  1. char字符类型使用 单引号, string字符串使用的是 双引号
  2. rust的字符是Unicode编码。

二 Compound Type 复合类型

1. The Tuple Type 元组类型

  1. rust通过在圆括号内使用逗号分隔列表值来创建一个元组,元组内的每个元素的类型可以是不同的。
    fn main() {
        let tup: (i32, f64, u8) = (500, 6.4, 1); 
    }
    

类型注释是可选的。

  1. 元组解包 destruct:

    fn main() {
        let tup = (500, 6.3, 1);
        let(x, y, z) = tup;
        println!("y is : {}", y);
    }
    
  2. 元组也可以通过 . + 下标索引的方式访问元组的元素:

    fn main() {
        let tup = (500, 6.4, 1);
        let x = tup.0;
        let y = tup.1;
        let z = tup.2;
    }
    

2. The Array Type 数组类型

  1. rust通过在方括内使用逗号分隔列表值来创建一个数组,不同于元组,数组内的元素类型必须是一致的。

  2. 不同于其他编程语言,rust的数组的长度是固定的, 一旦声明过了,数组大小就不可再改变。

  3. vector 向量类型是一个可变的数组,如果不确定使用数组还是向量,推荐使用向量,因为数组一旦声明,大小就不可修改。

  4. 通过**[索引]**访问数组元素:

    fn main() {
        let a = [1,2,3,4,5];
        
        let x = a[0];
        let y = a[1];
    }
    
  5. 数组的越界访问,编译器不会检查出错误,但运行时会报错退出。在程序试图通过下标访问一个元素时,rust会检查索引是否小于数组的长度,超出就会报错退出。这是rust安全性的一种体现。因为其他低级语言访问超出的下标可能会直接拿到内存中其他的数据。rust阻止了这一访问,保护了内存安全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值