从“usize”转换为“i32”与其他方式有什么区别?

2024-04-09

我正在创建一个函数,该函数生成一个大小为 n 的随机数数组,但我暂时的比较会引发错误。

while ar.len() as i32 < size { }

投诉内容:预计其中之一!, (, +, ,, ::, <, or >, found {.

如果我删除as i32它抱怨mismatch types如果我添加一个as usize到 size 变量,那么它就不会抱怨。


当您从较小尺寸的类型转换为较大尺寸的类型时,您不会丢失任何数据,但数据现在将占用更多空间。

当您从较大尺寸的字体转换为较小尺寸的字体时,您might丢失一些数据,但数据占用的空间会减少。

假设我有一个大小的盒子1可以容纳数字 0 到 9 和另一个大小的盒子2可以保存数字 0 到 99。

如果我想存储数字7;两个盒子都可以使用,但如果我使用较大的盒子,我会有剩余空间。我可以毫无问题地将值从较小的盒子移动到较大的盒子。

如果我想存储数字42;只有一个盒子可以容纳这个数字:较大的那个。如果我尝试取出号码并将其塞入较小的盒子中,则会丢失一些东西,通常是号码的上部。在这种情况下,我的 42 将变成2! Oops!

另外,有符号和无符号也有作用;当您在有符号和无符号数字之间进行转换时,您可能会错误地解释该值,因为像 -1 这样的数字会变成 255!

也可以看看:

  • 如何安全且惯用地在数字类型之间进行转换? https://stackoverflow.com/q/28273169/155423


In this 特别的情况,有点复杂。 Ausize被定义为“指针大小的整数”,通常是机器的本机大小。在 64 位 x64 处理器上,这意味着usize是 64 位,在 32 位 x86 处理器上,它将是 32 位。

铸造一个usize to a i32因此,根据您运行的机器类型,操作会有所不同。


The 错误信息您得到的结果是因为您尝试的代码在语法上不正确,并且编译器没有给出良好的错误消息。

你确实想输入

while (ar.len() as i32) < size { }

括号将有助于正确应用优先级。

为了安全起见,我会转换为更大的值:

while ar.len() < size as usize { }

也可以看看:

  • 如何使用 TryFrom 将 usize 转换为 u32? https://stackoverflow.com/q/50437732/155423
  • 如何在 u32 和 usize 之间进行惯用转换? https://stackoverflow.com/q/43704758/155423
  • 为什么允许使用“as”从 u64 到 usize 进行类型转换,但不允许使用“From”? https://stackoverflow.com/q/47786322/155423
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从“usize”转换为“i32”与其他方式有什么区别? 的相关文章

随机推荐

  • Spring & JPA:按需创建数据库模式和表

    JPA Spring 是否有可能在运行时创建 删除具有自定义名称和相应表 由 Entity 注释给出 的数据库模式 例如当用户按下按钮时 我只知道关于javax persistence schema generation属性 它们在我的应用
  • 带圆角和锯齿状弧形边框的正方形

    我想知道是否可以用纯 CSS 制作一个带有圆角和缩进边框的正方形 目前我有这个 custom square position relative display block width 75px height 75px border 2px
  • goimports 需要忽略供应商包

    我正在尝试实施dep在我的项目中 这一切都运行良好 但它还添加了一个供应商目录 我现在需要更新我的工具以忽略此目录 否则我提供的软件包将被修改 或者我会收到警告误报 我目前正在使用以下工具 goimports w go vet go lin
  • 将 DataGridView 导出到 Excel 的简单方法

    我正在尝试将 DataGridView 数据复制到 Excel 并且使用以下代码 public static void ExportToExcel DataGridView dgView Microsoft Office Interop E
  • 如何防止对象被垃圾收集?

    如何防止对象被垃圾收集 是否有任何通过最终确定或幻像引用或任何其他方法的方法 我在一次采访中被问到这个问题 面试官建议finalize 可以使用 保留一个参考 如果您的对象过早被收集 则表明您的应用程序设计中存在错误 垃圾收集器仅收集应用程
  • HTML5 Canvas 沿着带有坐标的路径拖动图像

    是否可以拥有一个坐标数组并仅沿着这些坐标拖放图像 我想只使用 javascript 而不使用 javascript 库 我一直在摸不着头脑 一直在谷歌上搜索这个问题 但找不到如何做到这一点或者是否可能 Demo http jsfiddle
  • “此列列表没有匹配的唯一键或主键”。但主键确实存在

    所以我正在练习一些 sql 编码来进行测试 但我无法获得外键来引用主键 这是不起作用的表 CREATE TABLE ASSIGNMENT ASSIGN ID NUMBER 2 NOT NULL START DATE DATE END DAT
  • MYSQL:使用 union 将两个表合并为一个表

    我必须用另外两个表制作一个表 并使用联合 有效的查询是 SELECT FROM tabel1 UNION SELECT FROM tabel2 现在我要做的就是将此结果 数据 放入表3 我已经拥有的表 其列与表1和表2中的列相同 谁能帮我
  • Django Rest 框架 JWT 和自定义身份验证后端

    我有一个自定义用户模型并创建了一个自定义身份验证后端 我在用Django 休息框架 http www django rest framework org and Django 休息框架 JWT http getblimp github io
  • 让 GNU C 编译器在 iOS 6.x 上运行

    我有一台越狱 evasi0n 第四代 iPad 带有 iOS 6 1 固件 通过 Cydia 我安装了移动终端 版本 520 2 然后 遵循this http iklive org cc compiling on ios 教程中 我已经下载
  • 子类需要访问抽象超类的私有属性

    我有一个抽象 java 类 它实现了它的几个方法 但没有实现其他方法 在它实现的方法中 它使用私有属性变量 使用的变量也需要在子类中使用 据我所知 我的选择是 在子类和超类中都声明私有变量 将抽象类中当前实现的方法的实现推迟到子类中 还有其
  • PInvoke 'class' 与通过引用传递 'struct'

    当我用谷歌搜索时 我看到帖子说传递 C class与通过相同struct通过引用 即ref SomeStruct name参数 到 C API 同时使用 PInvoke 这是一篇帖子C PInvoke 结构与类访问冲突 https stac
  • jQuery 调用 find 函数在 Firefox 中给出“格式不正确”错误

    我正在从 XML 文件中检索数据 然后使用 jQuery find 函数来访问该数据 但是 在 Firefox 版本 37 0 2 中 我在 JavaScript 控制台中收到以下错误 Error Unable to run script
  • Matplotlib 直方图错位且缺少条形

    我有大量数据文件 因此使用 numpy 直方图 与 matplotlib 中使用的相同 手动生成直方图并更新它们 然而 在绘图时 我感觉图表发生了变化 这是我用来批量手动创建和更新直方图的代码 请注意 所有直方图共享相同的箱 temp np
  • 如何添加管道 |在我的 linux find -exec 命令中?

    这不起作用 这可以在find中完成吗 或者我需要 xargs 吗 find name file follow type f exec zcat agrep dEOE grep 解决方案很简单 通过 sh 执行 exec sh c zcat
  • 需要从c#中的字符串中提取列名

    我正在尝试从 SQL 计算字符串中提取所有列名称 数据保存在数据表的单元格中 并由列周围的方括号确定 我可以提取 的每个实例 但刚刚注意到我有一个问题 有些列具有表名称 有些列具有架构和表名称 例如 列 表 列 或 架构 表 列 我如何修改
  • PostgreSQL:.psql_history 到 /dev/null

    而不是应用一个 set HISTFILE对于每个可能的连接的命令 我们不希望有 psql history根本不 然而 psql 似乎不喜欢这样 ln s dev null psql history psql psql 8 4 8 postg
  • JavaScript 中的二维数组

    对于大学来说 我们有一个关于二维数组的问题需要解决 但是它们的性质从未在课堂上讨论过 我已经在这个网站上搜索答案 这可能在我的代码中很明显 但无法让它工作 甚至无法真正理解正在发生的事情或原因 确切的问题是 Write a program
  • 如何在使用 GDB 遍历代码时禁用 C++ 模板中的单步执行?

    我试图使用 GDB 遍历代码 而 GDB 总是尝试显示 C 模板源代码 这使得调试不方便并且浪费了我很多时间 GDB 尝试介入该函数 当它找不到实现模板的文件时 它会显示错误 或者它会跳转到我不想看到的模板代码 我找不到如何禁用显示 单步进
  • 从“usize”转换为“i32”与其他方式有什么区别?

    我正在创建一个函数 该函数生成一个大小为 n 的随机数数组 但我暂时的比较会引发错误 while ar len as i32 lt size 投诉内容 预计其中之一 lt or gt found 如果我删除as i32它抱怨mismatch