当前位置: 首页 > 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;。…...

软考中级嵌入式——第九章 数据结构与算法

1.数据结构与算法概念1.1数据结构数据结构概述&#xff1a;数据结构是计算机存储、组织数据的方式。简单来说&#xff0c;就是如何把现实中的数据&#xff08;如数字、文字、图片&#xff09;合理地整理好&#xff0c;放进计算机里&#xff0c;并定义好对这些数据可以做什么操作…...

紧急预警:2024年底起,欧盟CSRD与国内《电力人工智能应用安全规范》将强制要求Agent可解释性审计——3类高危黑箱行为自查清单

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;AI Agent能源行业应用 AI Agent正以前所未有的深度融入能源行业的核心环节&#xff0c;从智能电网调度、风/光功率预测&#xff0c;到设备故障诊断与碳排优化决策&#xff0c;其自主感知、推理与执行能力显著…...

Claude Mythos:AI驱动的自动化漏洞挖掘与攻防范式跃迁

1. 项目概述&#xff1a;一场静默却震耳欲聋的AI能力跃迁这周&#xff0c;整个AI安全圈没有爆炸性新闻稿&#xff0c;没有铺天盖地的发布会直播&#xff0c;只有一份措辞克制、数据密集的系统卡片&#xff08;System Card&#xff09;和一份由英国AI安全研究所&#xff08;AISI…...

利用Taotoken CLI工具一键配置多开发环境与团队协作

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 利用Taotoken CLI工具一键配置多开发环境与团队协作 在团队开发场景中&#xff0c;一个常见的挑战是如何快速、统一地为不同成员和…...

告别Typora和Vditor?在WordPress后台打造你的全能Markdown写作环境

在WordPress中构建专业级Markdown写作环境的完整指南 对于习惯使用Typora、Vditor等独立Markdown编辑器的创作者来说&#xff0c;WordPress后台的默认编辑器往往显得笨重且功能有限。但通过合理的插件配置和主题选择&#xff0c;我们完全可以在WordPress中打造一个媲美专业编辑…...

taotoken的按token计费模式如何帮助个人开发者控制实验成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken的按Token计费模式如何帮助个人开发者控制实验成本 对于个人开发者、学生或独立研究者而言&#xff0c;在探索AI应用或进行…...

一个简单的MCP代码示例

MCP项目测试示例from fastmcp import FastMCP# 1. 创建 MCP 服务器实例 mcp FastMCP("MyFirstServer")# 2. 定义一个工具&#xff08;Tool&#xff09;&#xff1a;AI 可以调用的函数 mcp.tool() def add(a: int, b: int) -> int:"""将两个数字相…...

5G FWA智能终端技术解析:从核心架构到运营商集采实战

1. 项目概述&#xff1a;一次典型的5G FWA终端集采中标事件最近&#xff0c;业内传来一个挺有意思的消息&#xff0c;美格智能的5G FWA智能终端产品&#xff0c;在中国联通的一个招标项目中成功中标了。对于不熟悉通信行业的朋友来说&#xff0c;这听起来可能就是个普通的商业新…...

原来湖南2026年的灯光设计趋势竟然是这样的?

原来湖南2026年的灯光设计趋势竟然是这样的&#xff1f;随着科技的不断进步和人们生活水平的提高&#xff0c;灯光设计在家居和商业空间中的重要性日益凸显。湖南作为中部地区的经济大省&#xff0c;其灯光设计趋势也备受关注。本文将深入探讨2026年湖南灯光设计的主要趋势&…...

企业AI编程效率提升:2026最新权威AI编程工具必看

企业AI编程效率提升&#xff1a;2026最新权威AI编程工具必看开篇“企业研发团队效率低下&#xff0c;核心项目交付周期长&#xff0c;如何通过AI编程工具缩短开发周期、提升ROI&#xff1f;”“企业部署AI编程工具&#xff0c;如何兼顾安全合规、代码质量与开发效率&#xff0c…...