Rust入门-02-数据类型

数据类型data type

Rust 是一种静态类型statically typed)的语言,所以必须标明所有变量的类型。

标量(scalar)类型

  • 标量表示单个值,有4个基本的标量类型

    • 整形

    • 浮点型

    • 布尔型

    • 字符

1. 整数(integer)类型
  • 整数:没有小数部分的数字
    • i ( integer ) 表示有符号类型
    • u (unsigned) 表示无符号类型
长度 有符号类型 无符号类型
8 位 i8 u8
16 位 i16 u16
32 位 i32 u32
64 位 i64 u64
128 位 i128 u128
arch isize usize

isizeusize 类型取决于程序运行的计算机体系结构

  • 可以使用类型后缀来指定类型
    • 数字字面量还可以使用 _ 作为可视分隔符以方便读数
      • 1_000,值和 1000 相同
数字字面量 示例
十进制 98_222
十六进制 0xff
八进制 0o77
二进制 0b1111_0000
字节 (仅限于 u8) b'A'
  • 整数类型默认形式i32

  • 整形溢出

2.浮点类型
  • 浮点数(floating-point number):带有小数点的数字
    • f32大小为32位(单精度浮点型)
    • f64大小为64位(双精度浮点型)
  • 浮点类型默认形式为是 f64
3.布尔类型
  • 两个可能的值

    • ture
    • false
  • 使用bool声明

  • 大小为 1 个字节

4.字符类型
  • 声明时用单引号
  • 大小为4 个字节(与其他语言不同

复合类型compound type

  • 将多个值组合成一个类型,有2个基本的复合类型
    • 元组tuple
    • 数组array
1.元组类型
  • 声明后长度固定

  • 通过小括号内以逗号分隔

    • 其中每个位置都有一个类型
      • 且类型可以相同,可以不同
    let tup: (i32, f64, u8) = (500, 6.4, 1);
    
  • 解构destructuring

    • 借助let 将元组分解为单独的变量
    let tup = (500, 6.4, 1);
    
    let (x, y, z) = tup;  //将元组绑定到变量tup上
                          //并用let将元组分为三部分   
    println!("The value of y is: {}", y);
    
    • 还可以使用(句号) . 接访问的值来直接访问元组元素
      • 索引从 **0 **开始
    let x: (i32, f64, u8) = (500, 6.4, 1);
      
    let five_hundred = x.0;
      
    let six_point_four = x.1;
      
    let one = x.2;  
    
  • 没有值的,或者只有一个值的元组()被称为单元类型unit type

    • 该值被称为单元值unit value
    • 如果表达式不返回任何其他值,就隐式地返回单元值。
2.数组类型
  • 数组是可以在上分配的已知固定大小的单个内存块

    • 其将数据分配到而不是堆
  • 长度固定(与其他语言不同

  • 通过方括号内以逗号分隔

    • 每个元素类型相同
    let a = [1, 2, 3, 4, 5];
    
  • 初始化

    • 使用方括号编写数组的类型与元素数,其中用分号分隔
      • 方括号第二个数为元素的数量

let a: [i32; 5] = [1, 2, 3, 4, 5];


* 每个元素都相同时,指定元素初始值与元素数

```rust
let a = [3; 5];
相当于
let a = [3, 3, 3, 3, 3];
  • 访问数组元素

    • 使用索引访问
    let a = [1, 2, 3, 4, 5];
      
    let first = a[0];
    let second = a[1];
     
    
    • 若访问超出数组末尾的数组元素时
      • 会直接导致程序错误并推出
    • 而不是允许内存访问并继续运行程序
  • vector(动态数组,可变数组)

    • 其大小允许增长或缩小
posted @ 2022-04-24 18:33  ragworm  阅读(137)  评论(0)    收藏  举报