当前位置:首页 > 科技  > 软件

Rust编程基础之六大数据类型

来源: 责编: 时间:2023-11-01 17:00:43 470观看
导读1.Rust数据类型在 Rust 中, 每一个值都属于某一个 数据类型(data type), 这告诉 Rust 它被指定为何种数据,以便明确数据处理方式。我们将看到两类数据类型子集:标量(scalar)和复合(compound)。Rust是静态类型(statically typed

1.Rust数据类型

在 Rust 中, 每一个值都属于某一个 数据类型(data type), 这告诉 Rust 它被指定为何种数据,以便明确数据处理方式。我们将看到两类数据类型子集:标量(scalar)和复合(compound)。UqX28资讯网——每日最新资讯28at.com

Rust是静态类型(statically typed)语言,也就是说在编译时就必须知道所有变量的类型。根据值及其使用方式,编译器通常可以推断出我们想要用的类型。当多种类型均有可能时,必须增加类型注解,像这样:UqX28资讯网——每日最新资讯28at.com

let u_number: u32 = "42".parse().expect("Not a number!");

如果不像上面的代码这样添加类型注解 : u32,Rust 会显示如下错误,这说明编译器需要我们提供更多信息,来了解想要的类型:UqX28资讯网——每日最新资讯28at.com

图片UqX28资讯网——每日最新资讯28at.com

2.标量类型

标量(scalar)类型代表一个单独的值。Rust 有四种基本的标量类型:整型、浮点型、布尔类型和字符类型。UqX28资讯网——每日最新资讯28at.com

2.1 整型

整数 是一个没有小数部分的数字。下面表格展示了 Rust 内建的整数类型。我们可以使用其中的任一个来声明一个整数值的类型。UqX28资讯网——每日最新资讯28at.com

长度UqX28资讯网——每日最新资讯28at.com

有符号UqX28资讯网——每日最新资讯28at.com

无符号UqX28资讯网——每日最新资讯28at.com

8-bitUqX28资讯网——每日最新资讯28at.com

i8UqX28资讯网——每日最新资讯28at.com

u8UqX28资讯网——每日最新资讯28at.com

16-bitUqX28资讯网——每日最新资讯28at.com

i16UqX28资讯网——每日最新资讯28at.com

u16UqX28资讯网——每日最新资讯28at.com

32-bitUqX28资讯网——每日最新资讯28at.com

i32UqX28资讯网——每日最新资讯28at.com

u32UqX28资讯网——每日最新资讯28at.com

64-bitUqX28资讯网——每日最新资讯28at.com

i64UqX28资讯网——每日最新资讯28at.com

u64UqX28资讯网——每日最新资讯28at.com

128-bitUqX28资讯网——每日最新资讯28at.com

i128UqX28资讯网——每日最新资讯28at.com

u128UqX28资讯网——每日最新资讯28at.com

archUqX28资讯网——每日最新资讯28at.com

isizeUqX28资讯网——每日最新资讯28at.com

usizeUqX28资讯网——每日最新资讯28at.com

每一个变体都可以是有符号或无符号的,并有一个明确的大小。有符号 和 无符号 代表数字能否为负值,换句话说,这个数字是否有可能是负数(有符号数),或者永远为正而不需要符号(无符号数)。这有点像在纸上书写数字:当需要考虑符号的时候,数字以加号或减号作为前缀;然而,可以安全地假设为正数时,加号前缀通常省略。有符号数以补码形式存储。UqX28资讯网——每日最新资讯28at.com

每一个有符号的变体可以储存包含从 -(2n - 1) 到 2n - 1 - 1 在内的数字,这里 n 是变体使用的位数。所以 i8 可以储存从 -(27) 到 27 - 1 在内的数字,也就是从 -128 到 127。无符号的变体可以储存从 0 到 2n - 1 的数字,所以 u8 可以储存从 0 到 28 - 1 的数字,也就是从 0 到 255。UqX28资讯网——每日最新资讯28at.com

另外,isize 和 usize 类型依赖运行程序的计算机架构:64 位架构上它们是 64 位的,32 位架构上它们是 32 位的。UqX28资讯网——每日最新资讯28at.com

可以使用以下表格的任何一种形式编写数字字面值。请注意可以是多种数字类型的数字字面值允许使用类型后缀,例如 57u8 来指定类型,同时也允许使用 _ 作为分隔符以方便读数,例如1_000,它的值与你指定的 1000 相同。UqX28资讯网——每日最新资讯28at.com

数字字面值UqX28资讯网——每日最新资讯28at.com

例子UqX28资讯网——每日最新资讯28at.com

Decimal (十进制)UqX28资讯网——每日最新资讯28at.com

98_222UqX28资讯网——每日最新资讯28at.com

Hex (十六进制)UqX28资讯网——每日最新资讯28at.com

0xffUqX28资讯网——每日最新资讯28at.com

Octal (八进制)UqX28资讯网——每日最新资讯28at.com

0o77UqX28资讯网——每日最新资讯28at.com

Binary (二进制)UqX28资讯网——每日最新资讯28at.com

0b1111_0000UqX28资讯网——每日最新资讯28at.com

Byte (单字节字符)(仅限于u8)UqX28资讯网——每日最新资讯28at.com

b'A'UqX28资讯网——每日最新资讯28at.com

那么该使用哪种类型的数字呢?如果拿不定主意,Rust 的默认类型通常是个不错的起点,数字类型默认是 i32。isize 或 usize 主要作为某些集合的索引。UqX28资讯网——每日最新资讯28at.com

2.2 浮点型

Rust 也有两个原生的 浮点数(floating-point numbers)类型,它们是带小数点的数字。Rust 的浮点数类型是 f32 和 f64,分别占 32 位和 64 位。默认类型是 f64,因为在现代 CPU 中,它与 f32 速度几乎一样,不过精度更高。所有的浮点型都是有符号的。UqX28资讯网——每日最新资讯28at.com

以下是浮点数的代码例子:UqX28资讯网——每日最新资讯28at.com

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

浮点数采用 IEEE-754 标准表示。f32 是单精度浮点数,f64 是双精度浮点数。UqX28资讯网——每日最新资讯28at.com

2.3 布尔型

正如其他大部分编程语言一样,Rust 中的布尔类型有两个可能的值:true 和 false。Rust 中的布尔类型使用 bool 表示。UqX28资讯网——每日最新资讯28at.com

布尔型的使用例子如下:UqX28资讯网——每日最新资讯28at.com

fn main() {    let t = true;    let f: bool = false;}

使用布尔值的主要场景是条件表达式,例如 if 表达式。UqX28资讯网——每日最新资讯28at.com

2.4 字符类型

Rust 的 char 类型是语言中最原生的字母类型。下面是一些声明 char 值的例子:UqX28资讯网——每日最新资讯28at.com

fn main() {    let c = 'z';    let z: char = 'ℤ';    let heart_eyed_cat = ' 
                

本文链接:http://www.28at.com/showinfo-26-16367-0.htmlRust编程基础之六大数据类型

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 掌握Golang匿名函数

下一篇: Go语言中的闭包:封装数据与功能的强大工具

标签:
  • 热门焦点
  • MIX Fold3包装盒泄露 新机本月登场

    小米的全新折叠屏旗舰MIX Fold3将于本月发布,近日该机的真机包装盒在网上泄露。从图上来看,新的MIX Fold3包装盒在外观设计方面延续了之前的方案,变化不大,这也是目前小米旗舰
  • 卢伟冰长文解析K60至尊版 对Redmi有着里程碑式的意义

    在今天的Redmi后性能时代战略发布会结束之后,Redmi总经理卢伟冰又带来了一篇长文,详解了为什么 Redmi 要开启后性能时代?为什么选择和 MediaTek、Pixelworks 深度合作?以及后性
  • Mate60手机壳曝光 致敬自己的经典设计

    8月3日消息,今天下午博主数码闲聊站带来了华为Mate60的第三方手机壳图,可以让我们在真机发布之前看看这款华为全新旗舰的大致轮廓。从曝光的图片看,Mate 60背后摄像头面积依然
  • Redmi Pad评测:红米充满野心的一次尝试

    从Note系列到K系列,从蓝牙耳机到笔记本电脑,红米不知不觉之间也已经形成了自己颇有竞争力的产品体系,在中端和次旗舰市场上甚至要比小米新机的表现来得更好,正所谓“大丈夫生居
  • 28个SpringBoot项目中常用注解,日常开发、求职面试不再懵圈

    前言在使用SpringBoot开发中或者在求职面试中都会使用到很多注解或者问到注解相关的知识。本文主要对一些常用的注解进行了总结,同时也会举出具体例子,供大家学习和参考。注解
  • 线程通讯的三种方法!通俗易懂

    线程通信是指多个线程之间通过某种机制进行协调和交互,例如,线程等待和通知机制就是线程通讯的主要手段之一。 在 Java 中,线程等待和通知的实现手段有以下几种方式:Object 类下
  • 之家push系统迭代之路

    前言在这个信息爆炸的互联网时代,能够及时准确获取信息是当今社会要解决的关键问题之一。随着之家用户体量和内容规模的不断增大,传统的靠"主动拉"获取信息的方式已不能满足用
  • iQOO Neo8 Pro评测:旗舰双芯加持 最强性能游戏旗舰

    【Techweb评测】去年10月,iQOO推出了一款Neo7手机,该机搭载了联发科天玑9000+,配备独显芯片Pro+,带来了同价位段最佳的游戏体验,一经上市便受到了诸多用
  • SN570 NVMe SSD固态硬盘 价格与性能兼具

    SN570 NVMe SSD固态硬盘是西部数据发布的最新一代WD Blue系列的固态硬盘,不仅闪存技术更为精进,性能也得到了进一步的跃升。WD Blue SN570 NVMe SSD的包装外
Top