当前位置: 首页 > news >正文

【Rust练习】2.数值类型

练习题来自https://practice-zh.course.rs/basic-types/numbers.html

1

// 移除某个部分让代码工作
fn main() {let x: i32 = 5;let mut y: u32 = 5;y = x;let z = 10; // 这里 z 的类型是? 
}

y的类型不对,另外,数字的默认类型是i32

fn main() {let x: i32 = 5;let mut y: i32 = 5;y = x;let z = 10; // 这里 z 的类型是 i32
}

2

// 填空
fn main() {let v: u16 = 38_u8 as __;
}

同理,这里的__应该是u16,以最后确定的类型为准

3 如果我们没有显式的给予变量一个类型,那编译器会自动帮我们推导一个类型

// 修改 `assert_eq!` 让代码工作
fn main() {let x = 5;assert_eq!("u32".to_string(), type_of(&x));
}// 以下函数可以获取传入参数的类型,并返回类型的字符串形式,例如  "i8", "u8", "i32", "u32"
fn type_of<T>(_: &T) -> String {format!("{}", std::any::type_name::<T>())
}

数字类型默认推导为i32,这里改为i32即可。

// 修改 `assert_eq!` 让代码工作
fn main() {let x = 5;assert_eq!("i32".to_string(), type_of(&x));
}

4

// 填空,让代码工作
fn main() {assert_eq!(i8::MAX, __); assert_eq!(u8::MAX, __); 
}

8位有符号数,一位表示为符号,最大值即为2^7-1;无符号数就是2^8-1

// 填空,让代码工作
fn main() {assert_eq!(i8::MAX, 127); assert_eq!(u8::MAX, 255); 
}

5

// 解决代码中的错误和 `panic`
fn main() {let v1 = 251_u8 + 8;let v2 = i8::checked_add(251, 8).unwrap();println!("{},{}",v1,v2);
}

251+8会超过u8的上限,同样,251本身也不是一个合法的i8值,rust默认不允许溢出,全部改成u16/i16即可。

// 解决代码中的错误和 `panic`
fn main() {let v1 = 251_u16 + 8;let v2 = i16::checked_add(251, 8).unwrap();println!("{},{}",v1,v2);
}

6

// 修改 `assert!` 让代码工作
fn main() {let v = 1_024 + 0xff + 0o77 + 0b1111_1111;assert!(v == 1579);
}

转换成十进制实际上是1024+(1615+115)+(78+71)+… = 1597

// 修改 `assert!` 让代码工作
fn main() {let v = 1_024 + 0xff + 0o77 + 0b1111_1111;assert!(v == 1597);
}

7


// 将 ? 替换成你的答案
fn main() {let x = 1_000.000_1; // ?let y: f32 = 0.12; // f32let z = 0.01_f64; // f64
}

默认的浮点数类型为f32,这里填写即可。

8

fn main() {assert!(0.1+0.2==0.3);
}

说是用两种方法,我觉得有意义的只有一种。

fn main() {assert!((0.1_f64 + 0.2 - 0.3).abs() < 0.00001);
}

9 🌟🌟 两个目标: 1. 修改 assert! 让它工作 2. 让 println! 输出: 97 - 122

fn main() {let mut sum = 0;for i in -3..2 {sum += i}assert!(sum == -3);for c in 'a'..='z' {println!("{}",c);}
}

第一个是左闭右开区间,改成左闭右闭就行;第二个需要转换,从字符转成u8,不过不能像C++一样直接输出。

fn main() {let mut sum = 0;for i in -3..=2 {sum += i}assert!(sum == -3);for c in 'a'..='z' {println!("{}",c as u8);}
}

10

// 填空
use std::ops::{Range, RangeInclusive};
fn main() {assert_eq!((1..__), Range{ start: 1, end: 5 });assert_eq!((1..__), RangeInclusive::new(1, 5));
}

这个知识点前面也没有讲过。

首先形如(x..y)的左闭右开区间,默认推导为range,所以第一个右边为5;而形如(x..=y)的左闭右闭,默认推导为RangeInclusive,所以右边填=5

// 填空
use std::ops::{Range, RangeInclusive};
fn main() {assert_eq!((1..5), Range{ start: 1, end: 5 });assert_eq!((1..=5), RangeInclusive::new(1, 5));
}

11

// 填空,并解决错误
fn main() {// 整数加法assert!(1u32 + 2 == __);// 整数减法assert!(1i32 - 2 == __);assert!(1u8 - 2 == -1);assert!(3 * 50 == __);assert!(9.6 / 3.2 == 3.0); // error ! 修改它让代码工作assert!(24 % 5 == __);// 逻辑与或非操作assert!(true && false == __);assert!(true || false == __);assert!(!true == __);// 位操作println!("0011 AND 0101 is {:04b}", 0b0011u32 & 0b0101);println!("0011 OR 0101 is {:04b}", 0b0011u32 | 0b0101);println!("0011 XOR 0101 is {:04b}", 0b0011u32 ^ 0b0101);println!("1 << 5 is {}", 1u32 << 5);println!("0x80 >> 2 is 0x{:x}", 0x80u32 >> 2);
}
fn main() {// Integer additionassert!(1u32 + 2 == 3);// Integer subtractionassert!(1i32 - 2 == -1);assert!(1i8 - 2 == -1);assert!(3 * 50 == 150);assert!(9 / 3 == 3); // error ! make it workassert!(24 % 5 == 4);// Short-circuiting boolean logicassert!(true && false == false);assert!(true || false == true);assert!(!true == false);// Bitwise operationsprintln!("0011 AND 0101 is {:04b}", 0b0011u32 & 0b0101);println!("0011 OR 0101 is {:04b}", 0b0011u32 | 0b0101);println!("0011 XOR 0101 is {:04b}", 0b0011u32 ^ 0b0101);println!("1 << 5 is {}", 1u32 << 5);println!("0x80 >> 2 is 0x{:x}", 0x80u32 >> 2);
}

相关文章:

【Rust练习】2.数值类型

练习题来自https://practice-zh.course.rs/basic-types/numbers.html 1 // 移除某个部分让代码工作 fn main() {let x: i32 5;let mut y: u32 5;y x;let z 10; // 这里 z 的类型是? }y的类型不对&#xff0c;另外&#xff0c;数字的默认类型是i32 fn main() {let x: i…...

通过 PPPOE 将 linux 服务器作为本地局域网 IPv4 外网网关

将 linux 服务器作为本地外网网关&#xff0c;方便利用 Linux 生态中的各种网络工具&#xff0c;对流量进行自定义、精细化管理… 环境说明 拨号主机&#xff1a;CentOS 7.9, Linux Kernel 5.4.257 拨号软件: rp-pppoe-3.11-7.el7.x86_64初始化 1、升级系统到新的稳定内核&a…...

gin源码分析

一、高性能 使用sync.pool解决频繁创建的context对象&#xff0c;在百万并发的场景下能大大提供访问性能和减少GC // ServeHTTP conforms to the http.Handler interface. // 每次的http请求都会从sync.pool中获取context&#xff0c;用完之后归还到pool中 func (engine *Engin…...

数学建模入门

目录 文章目录 前言 一、数学建模是什么&#xff1f; 1、官方概念&#xff1a; 2、具体过程 3、适合哪一类人参加&#xff1f; 4、需要有哪些学科基础呢&#xff1f; 二、怎样准备数学建模&#xff08;必备‘硬件’&#xff09; 1.组队 2.资料搜索 3.常用算法总结 4.论文撰写的…...

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(十二)-无人机群在物流中的应用

引言 本文是3GPP TR 22.829 V17.1.0技术报告&#xff0c;专注于无人机&#xff08;UAV&#xff09;在3GPP系统中的增强支持。文章提出了多个无人机应用场景&#xff0c;分析了相应的能力要求&#xff0c;并建议了新的服务级别要求和关键性能指标&#xff08;KPIs&#xff09;。…...

同三维T80006EH2-4K30编码器视频使用操作说明书:高清HDMI编码器,高清SDI编码器,4K超清HDMI编码器,双路4K超高清编码器

同三维T80006EH2-4K30编码器视频使用操作说明书&#xff1a;高清HDMI编码器&#xff0c;高清SDI编码器&#xff0c;4K超清HDMI编码器&#xff0c;双路4K超高清编码器 T80006EH2-4K30编码器 同三维&#xff0c;十多年老品牌&#xff0c;我们一直专注&#xff1a;视频采集卡、视频…...

DHCP原理及配置

目录 一、DHCP原理 DHCP介绍 DHCP工作原理 DHCP分配方式 工作原理 DHCP重新登录 DHCP优点 二、DHCP配置 一、DHCP原理 1 DHCP介绍 大家都知道&#xff0c;现在出门很多地方基本上都有WIFI&#xff0c;那么有没有想过这样一个问题&#xff0c;平时在家里都是“固定”的…...

异步日志:性能优化的金钥匙

一、背景 2024 年 4 月的一个宁静的夜晚&#xff0c;正当大家忙完一天的工作准备休息时&#xff0c;应急群里“咚咚咚”开始报警&#xff0c;提示我们余利宝业务的赎回接口成功率下降。 通过 Monitor 监控发现&#xff0c;该接口的耗时已经超过了网关配置的超时阈值(2s)&#…...

matlab仿真 模拟调制(上)

&#xff08;内容源自详解MATLAB&#xff0f;SIMULINK 通信系统建模与仿真 刘学勇编著第五章内容&#xff0c;有兴趣的读者请阅读原书&#xff09; 1.幅度调制 clear all ts0.0025; %信号抽样时间间隔 t0:ts:10-ts;%时间矢量 fs1/ts;%抽样频率 dffs/length(t); %fft的频率分…...

【数据结构】--- 堆的应用

​ 个人主页&#xff1a;星纭-CSDN博客 系列文章专栏 :数据结构 踏上取经路&#xff0c;比抵达灵山更重要&#xff01;一起努力一起进步&#xff01; 一.堆排序 在前一个文章的学习中&#xff0c;我们使用数组的物理结构构造出了逻辑结构上的堆。那么堆到底有什么用呢&…...

0基础学会在亚马逊云科技AWS上利用SageMaker、PEFT和LoRA高效微调AI大语言模型(含具体教程和代码)

项目简介&#xff1a; 小李哥今天将继续介绍亚马逊云科技AWS云计算平台上的前沿前沿AI技术解决方案&#xff0c;帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS上的AI软甲开发最佳实践&#xff0c;并应用到自己的日常工作里。本次介绍的是如何在Amazon SageMaker上…...

护网HW面试——redis利用方式即复现

参考&#xff1a;https://xz.aliyun.com/t/13071 面试中经常会问到ssrf的打法&#xff0c;讲到ssrf那么就会讲到配合打内网的redis&#xff0c;本篇就介绍redis的打法。 未授权 原理&#xff1a; Redis默认情况下&#xff0c;会绑定在0.0.0.0:6379&#xff0c;如果没有采用相关…...

C++ //练习 15.8 给出静态类型和动态类型的定义。

C Primer&#xff08;第5版&#xff09; 练习 15.8 练习 15.8 给出静态类型和动态类型的定义。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 解释 静态类型&#xff1a;在编译时已知&#xff0c;是在变量声明时的类型或表达式生成的…...

阿里云ECS服务器安装jdk并运行jar包,访问成功详解

安装 OpenJDK 8 使用 yum 包管理器安装 OpenJDK 8 sudo yum install -y java-1.8.0-openjdk-devel 验证安装 安装完成后&#xff0c;验证 JDK 是否安装成功&#xff1a; java -version设置 JAVA_HOME 环境变量&#xff1a; 为了确保系统中的其他应用程序可以找到 JDK&…...

Windows系统上使用npm来安装和配置Yarn,在VSCode中使用

一、安装Yarn 1. 安装Node.js和npm 如果还没有安装Node.js和npm&#xff0c;可以从Node.js官方网站下载并安装最新版本的Node.js&#xff0c;npm会随Node.js一起安装。 2. 使用npm安装Yarn 打开命令提示符或PowerShell&#xff0c;运行以下命令来全局安装Yarn&#xff1a; …...

Unity ColorSpace 之 【颜色空间】相关说明,以及【Linear】颜色校正 【Gamma】的简单整理

Unity ColorSpace 之 【颜色空间】相关说明&#xff0c;以及【Linear】颜色校正 【Gamma】的简单整理 目录 Unity ColorSpace 之 【颜色空间】相关说明&#xff0c;以及【Linear】颜色校正 【Gamma】的简单整理 一、简单介绍 二、在Unity中设置颜色空间 三、Unity中的Gamma…...

JavaScript的学习(二)

今天继续学习JavaScript的第二天&#xff0c;还是打基础 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title…...

【接口自动化_06课_Pytest+Excel+Allure完整框架集成】

一、logging在接口自动化里的应用 1、设置日志的配置&#xff0c;并收集日志文件 日志的设置需要在pytest.ini文件里设置。这个里面尽量不要有中文 2、debug日志的打印 pytest.ini文件的开关一定得是true才能在控制台打印日志 import allure import pytest from P06_PytestFr…...

Profibus协议转Profinet协议网关模块连接智能电表通讯案例

一、背景 在工业自动化领域&#xff0c;Profibus协议和Profinet协议是两种常见的工业通讯协议&#xff0c;而连接智能电表需要用到这两种协议之间的网关模块。本文将通过一个实际案例&#xff0c;详细介绍如何使用Profibus转Profinet模块&#xff08;XD-PNPBM20&#xff09;实…...

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(九)-无人机服务区分离

引言 本文是3GPP TR 22.829 V17.1.0技术报告&#xff0c;专注于无人机&#xff08;UAV&#xff09;在3GPP系统中的增强支持。文章提出了多个无人机应用场景&#xff0c;分析了相应的能力要求&#xff0c;并建议了新的服务级别要求和关键性能指标&#xff08;KPIs&#xff09;。…...

Wan2.2-I2V-A14B高性能推理:C++后端服务开发与优化

Wan2.2-I2V-A14B高性能推理&#xff1a;C后端服务开发与优化 1. 为什么需要C高性能推理服务 在实时图像生成场景中&#xff0c;毫秒级的延迟差异可能直接影响用户体验和业务转化率。传统基于Python的Web框架&#xff08;如Flask/FastAPI&#xff09;虽然开发便捷&#xff0c;…...

解锁Noria查询重用机制:如何智能复用数据流组件实现应用性能飞跃

解锁Noria查询重用机制&#xff1a;如何智能复用数据流组件实现应用性能飞跃 【免费下载链接】noria Fast web applications through dynamic, partially-stateful dataflow 项目地址: https://gitcode.com/gh_mirrors/no/noria 在现代Web应用开发中&#xff0c;性能优化…...

Mathtype公式与文本混合文档的智能分割方案

Mathtype公式与文本混合文档的智能分割方案 每次处理那些夹杂着大量Mathtype公式的学术论文、技术报告或者教材时&#xff0c;你是不是也感到头疼&#xff1f;公式和文字密密麻麻地混在一起&#xff0c;想批量提取文字内容&#xff0c;公式成了“拦路虎”&#xff1b;想把公式…...

RMBG-1.4开源模型部署:AI净界支持Gradio自定义UI与插件扩展

RMBG-1.4开源模型部署&#xff1a;AI净界支持Gradio自定义UI与插件扩展 1. 项目简介 AI净界是一个基于BriaAI开源RMBG-1.4图像分割模型的智能背景移除工具。这个工具的核心能力是提供"发丝级"精度的自动抠图服务&#xff0c;无论你上传的是复杂的风景照片&#xff…...

程序员必看!高质量免费源码网推荐

在数字化浪潮席卷全球的今天&#xff0c;代码已成为驱动创新的核心动力。无论是初创企业快速搭建商业平台&#xff0c;还是开发者优化项目架构&#xff0c;高质量的源码资源都能显著缩短研发周期、降低开发成本。然而&#xff0c;面对网络上鱼龙混杂的源码平台&#xff0c;如何…...

AcousticSense AI优化升级:如何提升识别准确率和响应速度

AcousticSense AI优化升级&#xff1a;如何提升识别准确率和响应速度 1. 从听到看&#xff1a;音频识别的新范式 传统音频识别技术往往受限于特征提取的局限性&#xff0c;而AcousticSense AI开创性地将声音转化为视觉信号进行处理。这套系统通过三个关键步骤实现音频理解&am…...

三维空间智能体(3D Spatial Agent)的目标连续感知与主动控制技术体系研究与应用:专家评审18问18答

一、学术与原理类&#xff08;1–6&#xff09;Q1&#xff1a;你们所谓“像素即坐标”&#xff0c;在理论上如何成立&#xff1f;误差如何界定&#xff1f;A&#xff1a; 基于多视角几何与相机内外参标定&#xff0c;将像素反投影为空间射线&#xff0c;通过多视角交汇&#xf…...

HTML5从零到精通全攻略,一周内精通前端最基本框架

这是一篇为“什么都不懂的初学者”准备的HTML5超详细入门长文。请注意&#xff0c;文章较长&#xff0c;但结构清晰&#xff0c;配有大量简单例子和实战环节。我们遵循从概念到实践&#xff0c;从简单到复杂的路径。 ⚠️ 长文预警与学习指南 本文旨在用一周左右的时间&#x…...

OpenClaw+千问3.5-9B学术助手:自动整理参考文献与生成综述

OpenClaw千问3.5-9B学术助手&#xff1a;自动整理参考文献与生成综述 1. 为什么需要自动化文献处理 去年冬天&#xff0c;当我面对堆积如山的PDF文献时&#xff0c;突然意识到传统文献管理方式已经跟不上现代研究的节奏。手动标注重点、复制粘贴引用、反复切换不同文献工具—…...

编写程序实现钓鱼浮标刻度雕刻,防水不褪色,输出钓友精准看口,实用刚需。

应用到广大钓友最关心的“眼睛”——钓鱼浮标&#xff08;浮漂&#xff09;上。我们要解决的是户外垂钓中一个既专业又恼人的问题&#xff1a;浮标刻度的防水与清晰度。项目方案&#xff1a;基于Python的钓鱼浮标激光刻度精密雕刻系统一、 实际应用场景描述想象一下&#xff0c…...