short、byte 运算不能赋值给原类型问题分析

一、题目分析

该题目来源于牛客网中的一道选择题

给出如上代码,问你输入结果,但是考试时并不能看出错误原因导致踩坑 ;

鼠标指向报错位置,直接给出提示了,两种类型四则运算都会强制转换为int之后进行运算

 

二、具体原因 

        为什么两个 short 相加会变成 int,有的解释说,两个 short 相加可能溢出,所以用 int 来接就不会溢出,那这样的话,两个 int 相加岂不应该是 long 类型吗?其实本质的原因要从字节码开始讲起。

为什么 short、byte 会被提升为 int?

Java 虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字(称为操作码,Opcode)以及跟随其后的零至多个代表次操作所需参数(称为操作数,Operands)而构成。

Java 虚拟机的指令集中的大多数都对它们执行的操作的数据类型进行编码,例如 iload 指令,是将一个局部变量加载到操作栈,且这个局部变量必须是 int 类型,每一个指令都是只能接受对应类型的数据的。

但由于操作码的长度为一个字节,这意味着指令集的操作码总数不可能超过 256 条,这也为设计包含数据类型的操作码带来了很大压力:如果每一种与数据类型相关的指令都支持 Java 虚拟机所有运行时数据类型的话,那指令的数量就会超出一个字节所能表示的数量范围了。

根据下表(来源 Table 2.11.1-A. Type support in the Java Virtual Machine instruction set),可以发现大部分指令都没有支持 byte、char 和 short 类型,甚至没有任何指令支持 boolean 类型。因此如果要对两个 short 类型的数字相加,那只能转成 int,再使用 iadd 命令相加,然后再转成 short 了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/475166.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

演讲嘉宾公布 | 智能家居与会议系统专题论坛将于3月28日举办

一、智能家居与会议系统专题论坛 智能家居通过集成先进的技术和设备,为人们提供了更安全、舒适、高效、便捷且多彩的生活体验。智能会议系统它通过先进的技术手段,提高了会议效率,降低了沟通成本,提升了参会者的会议体验。对于现代…

Linux系统部署SQL Server结合内网穿透实现公网访问本地数据库

文章目录 前言1. 安装sql server2. 局域网测试连接3. 安装cpolar内网穿透4. 将sqlserver映射到公网5. 公网远程连接6.固定连接公网地址7.使用固定公网地址连接 前言 简单几步实现在Linux centos环境下安装部署sql server数据库,并结合cpolar内网穿透工具&#xff0…

使用OpenHarmony如何定制开发一套分布式亲子早教系统

概述 本篇Codelab是基于TS扩展的声明式开发范式编程语言编写的一个分布式益智拼图游戏,可以两台设备同时开启一局拼图游戏,每次点击九宫格内的图片,都会同步更新两台设备的图片位置。效果图如下: 说明: 本示例涉及使用…

【Gradle】取消使用idea+Gradle创建项目时自动生成.main结尾的子module

显示效果如下图所示&#xff0c;看起来比较不爽&#xff0c;但是不影响使用 解决方案&#xff1a; 一、打开.idea/gradle.xml文件 先在gradle.xml中添加内容 <option name"resolveModulePerSourceSet" value"false" />&#xff0c;然后刷新Gradle工…

嵌入式实习难找怎么办?

今日话题&#xff0c;嵌入式实习难找怎么办&#xff1f;个人建议如果找不到实习机会&#xff0c;可以回归学习嵌入式所需的知识&#xff0c;积累项目经验或者回顾之前参与过的项目&#xff0c;将它们整理复盘。如果还有时间&#xff0c;可以再尝试找实习&#xff0c;如果找不到…

Excel第27享:基于if函数嵌套的多结果唯一性匹配

1、需求描述 如下图所示&#xff0c;现在有E列、F列、G列三列数据&#xff0c;在D列中填充“最终对应编号”&#xff0c;匹配原则是&#xff1a;E列、F列、G列三列数据中&#xff0c;哪个有数据就填充哪个数据&#xff0c;如果都没有&#xff0c;就显示空值即可。 2、解决思路…

Web Service接口测试

Web service 接口测试 一. web Service概念 Web service使用与平台和编程语言无关的方式进行通讯的一项技术, web service 是一个接口, 他描述了一组可以在网络上通过标准的XML消息传递访问的操作,它基于xml语言协议来描述要执行的操作或者要与另外一个web 服务交换数据, 一组…

常用文件怎么做成二维码?文件转二维码的制作教程

现在扫码查看或者下载文件的使用场景越来越多&#xff0c;这种方式不仅有效的提高文件的安全性&#xff0c;还有效提高了文件传输的便捷性&#xff0c;所以现在将文件转二维码是一种很流行的展现方式。那么比较常用的文件格式有pdf、excel、word、ppt等&#xff0c;这些格式的文…

Chain of Verification-CoVe减少LLM中的幻觉现象

Chain-Of-Verification Reduces Hallucination In Large Language Models 在大型语言模型中&#xff0c;产生看似合理但实际上错误的事实信息&#xff0c;即幻觉&#xff0c;是一个未解决的问题。我们研究了语言模型在给出回答时进行深思以纠正错误的能力。我们开发了Chain-of…

引入AGV无人搬运叉车前应该进行的有效沟通

agv 随着科技的快速发展&#xff0c;无人化、智能化成为物流行业发展的新趋势。其中&#xff0c;AGV无人搬运车以其高效、准确、灵活的特点&#xff0c;逐渐成为物流行业的超能英雄。AGV小车小车又叫无人搬运车&#xff0c;自动导引车&#xff0c;移动搬运机器人&#xff0c;指…

接口测试、postman、测试点提取【主】

接口测试是测试系统组件间接口的一种测试 接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点 测试的重点是要检查数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及系统间的相互逻辑依赖关系 文章目录 HTTP接口 & Web Service接口RESTful接口…

硬盘哨兵Hard Disk Sentinel Pro V6.20.0.0 便携版

Hard Disk Sentinel 是一款功能强大的硬盘监控和分析软件&#xff0c;专为 Windows 用户设计。它可以实时监测硬盘驱动器&#xff08;HDD&#xff09;、固态硬盘&#xff08;SSD&#xff09;、混合硬盘&#xff08;SSHD&#xff09;、NVMe SSD、RAID 数组和外部 RAID 盒子的健康…

生产力工具|GitHub的使用与将其应用到生产中

一、GitHub的相关介绍 &#xff08;一&#xff09;GitHub平台介绍 GitHub &#xff08;GitHub: Let’s build from here GitHub&#xff09;是一个面向开源及私有软件项目的托管平台&#xff0c;它提供了版本控制功能和协作特性&#xff0c;使得团队成员可以共同协作开发、合…

docker 容器挂掉,无法exec 进入bash 怎么修改容器里的文件

在使用tdengine 数据库时出现了 TDengine.Driver.TDengineError:“code:[0x334],error:Out of dnodes” 查找文档发现需要修改一个配置文件 。 /etc/taos/taos.cfg 中的 supportVnodes 参数 于是修改 保存。然后&#xff0c;运行出错。 03/21 06:56:27.986498 00000064 …

如何设置IDEA远程连接服务器开发环境并结合cpolar实现ssh远程开发

文章目录 1. 检查Linux SSH服务2. 本地连接测试3. Linux 安装Cpolar4. 创建远程连接公网地址5. 公网远程连接测试6. 固定连接公网地址7. 固定地址连接测试 本文主要介绍如何在IDEA中设置远程连接服务器开发环境&#xff0c;并结合Cpolar内网穿透工具实现无公网远程连接&#xf…

微信向量检索分析一体化数仓探索:OLAP For Embedding

作者&#xff1a;WeOLAP 团队 数据挖掘团队 擅长 OLAP 分析的 ClickHouse 不仅可以用于 vector search&#xff0c;还可承担起整条 embedding 的加工处理工作,All in one Pipeline 也让速度远超传统批处理框架数倍&#xff1b;检索性能虽无法与专业 sim 检索服务相媲美&#xf…

7-9 用天平找小球

题目链接&#xff1a;7-9 用天平找小球 一. 题目 1. 题目 2. 输入输出样例 3. 限制 二、代码 1. 代码实现 #include <stdio.h>int main(void) {unsigned int a,b,c;char ch A;if (!scanf("%d %d %d", &a, &b, &c)) {return -1;}if (a b) {ch…

17.WEB渗透测试--Kali Linux(五)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;16.WEB渗透测试--Kali Linux&#xff08;四&#xff09;-CSDN博客 1.ettercap简介与使用…

怎么做扫码签到小程序_探索未来会议签到新模式

在这个快节奏的时代&#xff0c;每一次会议都是一次思想的碰撞、智慧的交流。然而&#xff0c;传统的签到方式往往繁琐低效&#xff0c;不仅浪费了宝贵的时间&#xff0c;还可能影响会议的整体氛围。如今&#xff0c;随着科技的飞速发展&#xff0c;扫码签到小程序应运而生&…

easyExcel-读取合并单元格

目录 前言一、情景介绍二、问题分析三、代码实现四、测试方法五、小结 前言 Java-easyExcel入门教程&#xff1a;https://blog.csdn.net/xhmico/article/details/134714025 之前有介绍过如何使用 easyExcel&#xff0c;以及写了两个入门的 demo &#xff0c;这两个 demo 能应…