• 数据类型


    整数型(Integer)

    整数型简称整型,符号分为一下种类:

    位长度 有符号 无符号
    8-bit i8 u8
    16-bit i16 u16
    32-bit i32 u32
    64-bit i64 u64
    128-bit i128 u128
    arch isize usize

     

    size 和 usize 两种整数类型是用来衡量数据大小的,它们的位长度取决于所运行的目标平台,如果是 32 位架构的处理器将使用 32 位位长度整型

    整数的表述方法有以下几种

    进制
    十进制 98_222
    十六进制 0xff
    八进制 0o77
    二进制 0b1111_0000
    字节(只能表示 u8 型) b'A'

    很显然,有的整数中间存在一个下划线,这种设计可以让人们在输入一个很大的数字时更容易判断数字的值大概是多少

    浮点数型(Floating-Point)

    Rust与其它语言一样支持32位浮点数(f32)和64位浮点数(f64)
    默认情况下, 64.0将表示64位浮点数, 因为现代计算机处理器对两种浮点数计算的速度几乎相同, 但64位浮点数精度更高

    fn main() {
        let x = 2.0; // f64
        let y: f32 = 3.0; // f32
    }

     数学运算

    fn main() {
        let sum = 5 + 10; //
        let difference = 95.5 - 4.3; //
        let product = 4 * 30; //
        let quotient = 56.7 / 32.2; //
        let remainder = 43 % 5; // 求余
    }

    自运算

    sum += 1;  //等同于 sum = sum + 1

    注意:Rust不支持 ++ 和 --, 因为这两个运算符出现在变量的前后会影响代码可读性, 减弱了开发者对变量改变的意识能力

    布尔型

    布尔型用 bool 表示,值只能为 true 或 false

    字符型

    字符型用 char 表示

    Rust的char类型大小为4个字节, 代表Unicode标量值, 这意味着它可以支持包括中文在内的非英文字符, 甚至表情符号和零宽度空格在Rust中都是有效的char值
    Unicode值的范围从U+0000 ~ U+D7FF, 和U+E000 ~ U+10FFFF(包括两端)
    但是"字符"这个概念并不存在于Unicode中,因此您对"字符"是什么的直觉可能与Rust中的字符概念不匹配
    所以一般推荐使用字符串储存UTF-8文字(非英文字符尽可能地出现在字符串中)

    注意:由于中文文字编码有两种(GBK 和 UTF-8), 所以编程中使用中文字符串有可能导致乱码的出现
    这是因为源程序与命令行的文字编码不一致, 所以在Rust中字符串和字符都必须使用UTF-8编码,否则编译器会报错

    复合类型

      元组

      元组用一对()包括的一组数据, 可以包含不同种类的数据
    let tup:(i32, f64, u8) = (500, 6.4, 1); 
    println!("tup.0 等于 {}" , tup.0);
    println!("tup.1 等于 {}" , tup.1);
    println!("tup.2 等于 {}" , tup.2);
    
    let (x, y, z) = tup;
    println!("x等于 {}" , x);
    println!("y等于 {}" , y);
    println!("z等于 {}" , z);
    
    //输出:
    //tup.0 等于 500
    //tup.1 等于 6.4
    //tup.2 等于 1  
    //x等于 500     
    //y等于 6.4     
    //z等于 1  

        数组

      数组用一对[]包括的同类型数据

      语法:let variable_name:[dataType;size] = [value1,value2,value3, ... ];

    let a = [1, 2, 3, 4, 5];  //a 是一个长度为 5 的整型数组
    let b = ["January", "February", "March"];  //b 是一个长度为 3 的字符串数组
    let c: [i32; 5] = [1, 2, 3, 4, 5];  // c 是一个长度为 5 的 i32 数组
    let d = [3; 5];  // 等同于 let d = [3, 3, 3, 3, 3];
    
    // 数组访问
    let first = a[0];  //结果:1
    let second = a[1];  //结果:2
    
    //数组赋值
    a[0] = 123;  //错误:数组 a 不可变
    let mut a = [1, 2, 3];
    a[0] = 4;  //正确
  • 相关阅读:
    编程之美-2.18 数组分割
    话题模型
    暂时跳过的Leetcode题目
    LDA主题模型
    二叉树非递归的统一实现
    取余和取模运算
    IDM非补丁破解方法
    两种建立堆的方法HeapInsert & Heapify
    非阻塞connect:Web客户程序
    非阻塞connect
  • 原文地址:https://www.cnblogs.com/shiliye/p/13410180.html
Copyright © 2020-2023  润新知