两个正整数相乘的结果转换为负值

2023-11-22

我有这样的代码:

int a = 629339;
int b = 4096;
long res = a*b;

结果是-1717194752但如果我添加一个手动转换到长long res = ((long)a)*b; or long res = (long) a*b;结果是正确的2577772544谁能解释一下它是如何工作的。


您必须将赋值语句分成几个部分才能了解正在执行的操作:

long res = a*b;

步骤 1 获取值a and b.

第 2 步是评估a * b。自从a and b都是ints,这是一个int乘法。所以我们乘以629339 by 629339这将是2577772544。 很遗憾,2577772544大于 Java 的最大可能值intvalue ...所以乘法运算默默地进行溢出...我们得到-1717194752反而。

第 3 步,我们将 RHS 的值分配给 LHS。由于 RHS 是intLHS 是float,JLS 说我们执行原始拓宽转换...这只是变成-1717194752 into a long具有相同的值。然后将加宽的值分配给res.


为了得到您期望的答案,我们必须使用以下命令强制执行乘法long算术。例如:

long res = ((long) a) * b;

在这种情况下,我们有一个乘法long by an int,这是通过扩大int to a long并执行一个long乘。这不再溢出(因为2577772544远低于最大的longvalue),所以当我们最终将值赋给res,这就是您期望的数字。

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

两个正整数相乘的结果转换为负值 的相关文章

  • 方向改变时的类转换异常 (Android)

    我有一个由选项卡活动托管的活动 当我更改屏幕方向时 我的应用程序崩溃了 02 14 21 01 35 825 E AndroidRuntime 9424 java lang RuntimeException Unable to start
  • Java 泛型:如何为泛型类型指定类类型?

    我有一个 POJO 指定为 MyClass u where U是泛型类型参数 我正在尝试编写一个接受类引用的实用方法Class u
  • 从 sbt 程序集运行 uber jar 会导致错误:无法找到或加载主类

    我有一个使用 sbt 程序集插件打包为 uber jar 的 Spark 作业 这build sbt指定一个可运行的 main 作为生成的 uber jar 的目标 mainClass in assembly Some com foo Ba
  • Android 中的垂直和水平滚动视图

    我真的很累了寻找垂直和水平滚动视图的解决方案 我读到框架中没有任何视图 布局实现此功能 但我需要这样的东西 我需要在其他布局中定义一个布局 子布局必须实现垂直 水平滚动才能移动 最初实现了一个逐像素移动布局的代码 但我认为这不是正确的方法
  • 开始使用 Honeycomb 进行 Android 开发 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • android中如何布局支持各种屏幕?

    我正在使用gridview开发图库视图 在小屏幕中我的布局设计修复得很好 但大屏幕没有我的设计 在大屏幕中有一些空格 加载更多图片 按钮参考图2 我该如何解决这个问题 我的清单文件添加了这一行以支持各种屏幕 请给我一些示例代码
  • 如何使用 Guava 连接字符串?

    我写了一些代码来连接字符串 String inputFile for String inputLine list inputFile inputLine trim 但我不能使用 连接 所以我决定使用 Guava 所以我需要使用Joiner
  • HTTP PUT 在 Java 中上传文件

    Edit 我想我已经弄清楚如何执行二进制数据部分 仔细检查代码 但我很确定我做对了 现在 当我尝试按照中所述完成上传时遇到新错误Vimeo API 文档 http vimeo com api docs upload streaming Ed
  • jQuery mobile - 仅在侧面板关闭时才允许滚动?

    我不希望用户在任何侧边栏打开时滚动 一旦关闭 他们应该滚动 我使用了下面的代码 但它不适用于 Android 移动设备 document bind panelopen function e data body css overflow hi
  • 我们可以有虚假中断吗?

    我正在创建一个任务轮询器 每分钟都会查找任务 它看起来像这样 public class Poller private final ExecutorService e Executors newSingleThreadExecutor pub
  • 无法映射 ftl 文件中的 jsonRequest 属性

    我想在 FTL 文件中映射下面的 json 文件市场和子市场字段 但是当我尝试下面的代码时 它没有映射 有人可以帮助我吗 我从 2 天开始就无法映射它 Json请求 ProcessOrderRequest prevalidationMode
  • 使用 qbs 构建 qt 应用程序

    我想知道在 Linux 上使用 qbs 编译 构建和创建 Android Qt 应用程序的步骤 我拥有所有必要的工具 目前我可以使用 qmake 创建 apk Qbs 目前不支持构建 Qt Android 应用程序 Qbs v1 4 中引入
  • 找不到符号assertEquals

    我正在尝试为计算器编写第一个单元测试 但 NetBeans 说它找不到该符号assertEquals和注释 Test 我应该包括一些东西吗 我正在使用 NetBeans 7 3 1 和 W7 package calculator impor
  • scala中的协变类型参数需要在java接口中保持不变

    我有一个看起来像这样的特征 一些进一步的信息可以在我自己提出了这个相关问题 https stackoverflow com questions 3695990 inheritance and automatic type conversio
  • 从命令行运行 Maven 插件的语法是什么。

    我看到这里已经有人问过这个问题 如何从命令行执行maven插件 https stackoverflow com questions 12930656 how to execute maven plugin from command line
  • android 媒体播放器 - 如何禁用范围请求? (Nexus 7 上的音频流中断)

    我有一个音频流应用程序 它运行本地代理服务器 本地代理服务器与互联网流媒体源建立 http 连接 在本地获取并缓冲流数据 然后 在应用程序内部 我使用 MediaPlayer 连接到本地代理服务器 使用方法 mediaPlayer setD
  • 将带有 webapp 的 WAR 部署到 Maven 中央存储库是否有意义?

    这样做有意义吗 如果是 我在哪里可以找到使用简单的 Web Hello World 执行此操作的示例 当人们从 Maven 执行 Web 应用程序时 他们会使用 Jetty 来运行它吗 我想 tomcat 太重了 任何帮助将不胜感激 谢谢
  • 如何将QR码中的3个方块替换为圆圈以使用Paint android使用zxing自定义QR码?

    我用它作为自定义的参考 从方形到圆形使用zxing生成的QR码它是在java中所以我尝试将它转换为在android中使用 使用 zxing 生成具有自定义点形状的 QR 码 https stackoverflow com questions
  • 如何从spark中的hbase表中获取所有数据

    我在 hbase 中有一个大表 名称为 UserAction 它具有三个列族 歌曲 专辑 歌手 我需要从 歌曲 列族中获取所有数据作为 JavaRDD 对象 我尝试了这段代码 但效率不高 有更好的解决方案来做到这一点吗 static Spa
  • 如何使用剪辑来减少绘画时间?

    我正在尝试使用 Clip 来减少 CPU 负载 但剪辑在屏幕上留下了一些我似乎无法摆脱的垃圾 另外 打开和关闭剪辑似乎对 CPU 负载没有影响 在任一情况下 大部分时间似乎都花在重绘管理器和绘制缓冲图像上 import static jav

随机推荐

  • Skylake L2 缓存通过减少关联性增强?

    In 英特尔的优化指南在第 2 1 3 节中 他们列出了 Skylake 中缓存和内存子系统的许多增强功能 重点是我的 Skylake微架构的缓存层次结构有以下 增强功能 与前几代相比 缓存带宽更高 通过扩大的缓冲区可以同时处理更多的负载和
  • 有什么区别stdint h and cstdint 它们都可以在 MSVC Visual Studio 2010 和 gcc 4 5 1 中使用 并且两者都定义了intX t uintX t类型 其中X是类型的大小 以位为单位 如果两个标头
  • 正则表达式包括结果中应该是非捕获组的内容

    我有以下简单的测试 我试图获取正则表达式模式 以便它提取不带 exe 后缀的可执行文件名称 看来我的非捕获组设置 exe 不起作用或者我误解了它的工作原理 Both regex101 and 正则风暴网显示相同的结果 前者确认 exe 是非
  • 了解 SpriteKit CollisionBitMask

    我正在学习使用SpriteKit我正在遵循碰撞教程 我很难理解以下代码 struct PhysicsCategory static let None UInt32 0 static let All UInt32 UInt32 max sta
  • 在运行时覆盖 __setattr__

    我知道在 Python 中可以在运行时向类添加方法 class Test def init self self a 5 test Test import types def foo self print self a test foo ty
  • 迭代 numpy 数组的前 d 轴

    我得到了一个具有任意数量轴的数组 我想迭代它们 比如其中的第一个 d 我该怎么做呢 最初我想我会创建一个包含我想要循环的所有索引的数组 使用 i np indices a shape d indices np transpose np as
  • 在 C/C++ 中加密文本文件的最佳方法是什么?

    只要用户登录 基于 C C 的 cgi Web 应用程序就会在服务器上创建一个临时文本文件 当用户注销时 该文本文件将被删除 我想加密这个文本文件以及文件的内容 该文件将包含用户名和密码等信息 做这个的最好方式是什么 编辑 我看到有人建议图
  • UIWebBrowserView 不跨越整个 UIWebView

    所以我一直在尝试让这个简单的行为在我的 iPhone 应用程序上运行一段时间 我的顶部有一个导航栏 底部有一个标签栏 我正在将所有内容加载到网络视图中 我希望将其放在两者之间 我已经发帖讨论过这个问题两次了 都在这里 IOS 视图仍然没有加
  • 在 Bash 中将波形符回显到文件而不扩展它

    我需要在 Bash 脚本中向文件写入一个参数 所以我正在做这样的事情 echo Argument is 1 gt gt file 问题是 如果参数中有波形符 我不希望它扩展到主目录 因此 如果用户将 bin 作为参数传递给脚本 它将被写为
  • Win32 套接字 - 在发送到其他本地接口时强制 ip 数据包离开物理接口

    摘要 我正在尝试创建套接字以在同一台计算机上存在的两个物理接口之间传递数据 并且 Win32 套接字始终直接在内核中转发流量 而不是通过物理接口推送 有什么方法可以禁用此行为 也许可以通过设备设置 注册表调整 路由表恶作剧或套接字选项 我们
  • 创建针对 Monodroid 的 PCL

    我正在查看闪亮的 MVVMCross 项目 特别是N 1天MVVMCross系列 我注意到 slodge 创建了一个针对 Android 的 Mono 和 Monotouch 的 PCL 1 10 我安装了适用于 Android 的 mon
  • 如何将控制台输出重定向到文本文件

    我正在执行一个 Perl 程序 无论我的控制台上打印什么 我都想重定向 到一个文本文件 首选方法是通过命令行处理重定向 例如 perl w my program pl gt my output txt 如果你还想包含 stderr 输出 那
  • 数据文件中的字段超出最大长度 - 错误

    当我尝试将数据插入到指定大小的列中时varchar2 4000 在表中我收到错误为 Field in data file exceeds maximum length 数据 1 2 3 4 5 6 7 8 9 10 11 12 13 15
  • Android:如何在 CSV 文件中写入换行符?

    我正在尝试在 CSV 文件中组织我的数据 我想将我的数据放入特定行 因此我尝试放入 n 但它不起作用 请帮助我将数据放入特定行 谢谢进步 public void writeData String data String strFilePat
  • Java是向后兼容的,但是为什么jdk从1.6升级到1.8时需要升级很多库呢?

    近期我们升级了Jdk版本1 6 to 1 8在我的一个 Java 项目中 但有一些编译或运行时错误 所以我必须升级一些库 gradle 1 9 to 1 10 spring 3 x to 4 x 这是因为他们使用的是 ASM 的一些早期版本
  • ASP 的 JSON 返回错误

    我们正在使用由外部供应商编写的 ASP 应用程序 我的任务是对应用程序进行一些小的更改 但是我对 asp 或 json 一无所知 通过一些研究 我将其放在一起 我在表单上创建了一个文本框 我想将客户端 IP 地址返回到该文本框 我写了一个函
  • SSRS 2008:如何根据类别字段(有条件)隐藏表行

    I am new to Sql Server Reporting Services I have created my following report I want to remove hide rows of Brand Total w
  • 删除使用情节提要创建的导航栏中的半透明栏

    我从故事板创建了一个导航控制器 现在我尝试删除它的半透明选项 我把它放在我的 appdelegate m 上 UINavigationBar appearance setBarTintColor UIColor colorWithRed 5
  • PHP 检测 shell_exec() 命令是否失败

    我在 PHP 的 shell exec 中运行 ffmpeg 命令来转换列表中的多个视频 是否有办法检测视频转换时是否发生错误 或至少验证它完全完成转换 如果发生错误 我不想停止转换其他视频 只是能够记录错误 使用另一个系统调用函数捕获退出
  • 两个正整数相乘的结果转换为负值

    我有这样的代码 int a 629339 int b 4096 long res a b 结果是 1717194752但如果我添加一个手动转换到长long res long a b or long res long a b 结果是正确的25