• Rust数据类型——初学者指南


    Rust数据类型——初学者指南

    Rust数据类型,附带代码的Rust数据类型示例,简单解释。 Rust茁壮成长

    整数类型

    Rust有多种整数类型:i8、i16、i32、i64、i128、isize、u8、u16、u32、u64、u128、usize。

    i代表整数,后面的数字表示占用的位数。i8类型可以存储从-128到127的数字,而u8可以存储从0到255的数字。usize类型主要用于索引集合。

    1.  let x: i32 = -5;
    2.  let y: u32 = 5;

    在实际项目中,整数类型无处不在,从简单的计数到复杂的算法。

    浮点类型 Rust有两种浮点数的原始类型:f32和f64。它们分别表示32位和64位。默认情况下,Rust使用f64,因为在现代CPU上,它的速度大致与f32相同,但精度更高。

    1. let x: f32 = 3.0// 单精度浮点数
    2. let y: f64 = 3.01// 双精度浮点数

    浮点类型Rust精度可以有多少小数位?

    浮点数的小数位数不是固定的数量,而是可以表示的有效数字总数。浮点数的精度是指它可以保持的有效数字有多少。

    f32类型是单精度浮点数,大约具有6到9位小数精度。

    f64类型是双精度浮点数,大约具有15到17位小数精度。

    对于大多数情况,f64提供了足够的精度。

    然而,f32和f64都有可能存在舍入误差,因为它们不能精确表示所有可能的小数分数。对于需要极高精度的任务,尤其是财务计算或高精度科学计算,可以考虑使用提供任意精度算术的其他库。

    以下是f32和f64之间精度差异的简单示例:

    1. let f = 0.12345678901234567890f32;
    2. let d = 0.12345678901234567890f64;
    3. println!("f32: {}", f);  // 输出:0.12345679
    4. println!("f64: {}", d);  // 输出:0.12345678901234568

    在实际项目中,浮点类型用于测量、科学计算或任何需要精确分数的情况。

    布尔类型

    Rust中的布尔类型可以是true或false。

    1. let is_true: bool = true;
    2. let is_false: bool = false;

    布尔值用于条件语句、逻辑操作以及表示系统中某个条件的状态。

    字符类型

    char类型表示单个字符,占用4个字节。

    1. let c: char = 'z';
    2. let z: char = 'ℤ';
    3. let heart_eyed_cat: char = '😻';

    字符用于单个字符值,用于字符串或表示非ASCII符号和表情符号。

    元组 元组是一种复合类型,可以将不同类型的值组合在一起。我们可以通过解构元组或使用点(.)后跟值的索引来访问这些值。

    1. let tup: (i32, f64, u8= (5006.41);
    2. let (x, y, z) = tup;
    3. println!("The value of y is: {}", y); // 6.4

    元组通常用于函数返回时,当您想返回多个值时。

    数组 数组是多个相同类型的值的集合,存储在连续的内存位置中。数组的大小在编译时已知。

    1. let a: [i325= [12345];
    2. println!("The value array index 1: {}", a[1]); // 6.4

    数组在您想要收集相同类型的项目并且知道集合的长度时非常有用。 字符串 字符串是Rust中的有效数据类型,它们被实现为字节的集合(Vec),并且具有一些在处理文本时提供有用功能的方法。

    1. let s: String = String::from("Hello, world!");
    2. println!("The string value is: {}", s); // 6.4

    结论

    每天阅读有关Rust的文章,做练习,项目,最后是真实的项目对于成为Rust玩家至关重要。

  • 相关阅读:
    ArkUI框架,Flex布局,基础组件及封装,父子组件的双向绑定
    基于晶体结构优化的BP神经网络(分类应用) - 附代码
    DeFi借贷协议机制对比:Euler、Compound、Aave和Rari Capital
    07. 线程池原理(ThreadPool)
    mysql数据库SQL语句大全详解(下)
    【LeetCode】899.有序队列
    原型工具与代码实现的差距及改进设想
    大白话讲讲 Go 语言的 sync.Map(一)
    【滤波跟踪】基于不变扩展卡尔曼滤波器对装有惯性导航系统和全球定位系统IMU+GPS进行滤波跟踪附matlab代码
    HTTP 代理服务器的设计与实现(C++)
  • 原文地址:https://blog.csdn.net/qq_40523298/article/details/133434825