从int到short的可能有损转换[重复]

2023-12-08

我已将数组 gx、数组 arr 定义为短类型。但为什么左边的操作可能会以int类型结束,而我必须将其转换为short?编译器错误可能是从 int 到 Short 的有损转换。

这是我的代码。

public PixImage sobelEdges() {

short gy=0;
for(int x=1;x<width-1;x++){
    for(int y=1;y<height-1;y++){
       // if(x=){
            for(int z=0;z<3;z++){
            gx[x][y][z]=arr[x-1][y-1][z]-arr[x+1][y-1][z]+2*arr[x-1][y][z]-2*arr[x+1][y][z]+arr[x-1][y+1][z]-arr[x+1][y+1][z];

            }
       // }    
    }     
}   
return this;
// Don't forget to use the method mag2gray() above to convert energies to
// pixel intensities.

}

是因为所谓的拆箱吗?这意味着我每次做手术都需要施放?


这不是拆箱,而是开箱。这是“二进制数字提升”。JLS 第 5.6.2 节 states:

当运算符将二进制数字提升应用于一对操作数时(每个操作数必须表示可转换为数字类型的值),将按顺序应用以下规则:

  1. 如果任何操作数是引用类型,则将对其进行拆箱转换(第 5.1.8 节)。

  2. 加宽原语转换(第 5.1.2 节)适用于按照以下规则指定转换一个或两个操作数:

    • 如果其中一个操作数的类型为 double,则另一个将转换为 double。

    • 否则,如果任一操作数的类型为 float,则另一个将转换为 float。

    • 否则,如果任一操作数的类型为 long,则另一个将转换为 long。

    • 否则,两个操作数都转换为 int 类型.

and

对某些运算符的操作数执行二进制数字提升:

  • 乘法运算符 *、/ 和 %(第 15.17 节)

  • 数字类型 + 和 - 的加法和减法运算符(第 15.18.2 节)

  • 数值比较运算符 和 >= (§15.20.1)

  • 数值相等运算符 == 和 != (§15.21.1)

  • 整数按位运算符 &、^ 和 | (§15.22.1)

  • 在某些情况下,条件运算符 ? :(§15.25)

(强调我的)

当这些值相加/相乘时,它们将提升为int在数学完成之前。最后,您可以投射回short在分配回数组之前。

gx[x][y][z] = (short) (arr[x-1][y-1][z]-arr[x+1][y-1][z]+2*arr[x-1][y][z]
    -2*arr[x+1][y][z]+arr[x-1][y+1][z]-arr[x+1][y+1][z]);

每次使用小于的原始数据类型进行操作时,您都需要将其转换回来int,比如在你的short例子。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从int到short的可能有损转换[重复] 的相关文章

随机推荐

  • RubyMine 的运行配置导致 Ubuntu 上出现“Yarn 需要 Node.js 4.0”错误

    在我的 Elementary OS 机器 基于 Ubuntu 的操作系统 上 使用以下命令创建新的 Ruby on Rails 项目后rails new yarntest并将其加载到 RubyMine 中 我无法使用 RubyMine 的
  • 静态全局和本地标识符的隐藏

    以下程序是在课堂上分发的练习工作表上的 我们被要求提供它的输出 但根据我对链接的理解 file2 c 不应该有两个静态标识符 b 的实例 但程序编译时会出现警告并运行得很好 我的问题是 为什么允许这样做 我认为静态链接的要点是能够访问该文件
  • JMeter JSR 223 语言 js 与 javascript

    关于 JSR 223 采样器语言 我可以选择 javascript ECMAScript ECMA 262 第 51 版 Oracle Nashorn 1 8 0 144 and Node js ECMAScript ECMA 262 版本
  • ios - 混合 MIDI 文件,每个文件都有自己的声音字体

    我正在寻找一种方法来混合 2 个或更多 MIDI 文件 每个文件都有自己的声音字体文件 我找到了一个文件的以下代码 并尝试做多个音乐播放器 但我想这不应该是正确的方法 而且我每秒都会听到一些奇怪的流行声音 那么有没有其他方法 也许没有音乐播
  • 如何唯一化元组元素?

    我有一个字典结果元组 result name xxx score 120L name xxx score 100L name yyy score 10L 我想将其统一 统一操作后result name xxx score 120L name
  • 通过清除内存违规来中止而不是段错误

    我在处理 C 字符串时遇到了这种奇怪的行为 这是 K R 书中的一个练习 我应该编写一个函数 将一个字符串附加到另一个字符串的末尾 这显然要求目标字符串分配足够的内存 以便源字符串适合 这是代码 strcat Copies contents
  • jQuery - 可以将背景图像调整为设定大小吗?

    我现在的情况是 我迫切需要将 div 的背景图像调整到一定的大小 有谁知道这是否可以用 jQuery 实现 我知道它需要的大小 它不必随着 div 的大小而调整大小 35 000 张图像已缩放到错误的尺寸 并且需要上线 因此无法调整图像大小
  • 新应用程序上的 Windows Phone 8 错误

    我正在使用 Visual Studio 2012 n Windows 8 企业版创建 Windows Phone 8 应用程序 当我创建一个新的应用程序并想运行它只是为了看看它是否有效时 会立即弹出此错误 System NullRefere
  • 现代计算机的堆栈和堆空间

    当用 C 语言编写时 如何知道启动程序时内存中有多少可用堆栈空间 堆空间怎么样 我如何知道程序执行期间使用了多少内存 这都是 Win32 特定的 不是真正 C 特定的 只是操作系统 API 创建线程时 默认情况下它会获得 1MB 堆栈空间
  • 在 AOSP 中启动时运行 shell 脚本

    我在我的项目中使用 iMX 8 Mini EVK 我从 AOSP 为该板构建 Android 9 0 现在我想在启动时运行一个脚本 我做了以下文件更改 但仍然面临问题 文件 Android AOSP build device fsl imx
  • Oracle.ManagedDataAccess 到 AWS RDS DB - TCPS:无效的 SSL 钱包(魔术)

    我尝试使用 SSL 证书通过 Oracle ManagedDataAccess Nuget 包连接到 Amazon RDS 实例 我可以使用 orapki 生成的钱包通过 SQL Plus 成功连接 钱包生成如下AWS 说明 我想通过 C
  • ObjectDataSource 触发两次,或单独触发

    有人可以准确解释 ObjectDataSource 如何 何时触发吗 我有一个带有 GridView 的 ASP NET 页面 它引用了 ODS 我在 ODS 使用的方法中放置了一个断点 并注意到它触发了两次 我查看了代码 一开始答案似乎很
  • MongoDB 可以批量更新插入吗? C# 驱动程序

    我想在 Mongo 中进行批量更新插入 基本上我从供应商那里得到了一个对象列表 但我不知道哪些是我之前得到的 并且需要更新 哪些是新的 我可以一一进行更新插入 但 UpdateMany 不适用于更新插入选项 因此 我采取了选择文档 用 C
  • Chrome 不支持 `font-family: "Arial Bold"`?

    在 Chrome v75 Windows 10 中 font family Arial Black 有效 但是font family Arial Bold 没有 他们都在 Edge 中工作 我知道我仍然可以使用font weight 但在这
  • TIdHTTP 异常处理

    我创建了一个程序 可以自动连接到我们的本地服务器并下载更新 代码如下 Connect to web server and download ToBeInstalled ini Url http IPAdd ToBeInstalled ini
  • 遇到 SQL 错误:ORA-01843:不是有效的月份

    我使用此查询创建了一个表 CREATE TABLE Store id number 11 primary key not null opening time timestamp CHECK EXTRACT HOUR FROM opening
  • “一个或多个实体的验证失败。有关更多详细信息,请参阅“EntityValidationErrors”属性。”的解决方案。

    我遇到了这个错误 它没有提供任何关于根本原因的详细信息 但我找出了问题所在 我想分享它 以便遇到它的其他人可以成功解决问题 我有以下课程 public class BankUser IdentityUser IUserProfile reg
  • Jquery谷歌地图插件,添加事件监听器

    有人可以解释一下以下代码片段的含义吗 jQuery fn name 中发现谷歌 jquery ui map plugin jQuery each click mousedown rightclick dblclick mouseover m
  • 实现接口的非泛型方法中泛型的模式匹配

    我有一个令人沮丧的问题 我正在建造一个查看引擎在 ASP NET MVC 中 正在实现 IViewEngine 接口 在其中一种方法中 我试图动态地找出视图结果的类型 有时结果是一个模板 类型为 Template 这些键用于定位模板中的占位
  • 从int到short的可能有损转换[重复]

    这个问题在这里已经有答案了 我已将数组 gx 数组 arr 定义为短类型 但为什么左边的操作可能会以int类型结束 而我必须将其转换为short 编译器错误可能是从 int 到 Short 的有损转换 这是我的代码 public PixIm