当前位置: 首页 > 知识库问答 >
问题:

为什么字节之和是整数?[重复]

拓拔泉
2023-03-14

我有 tyo 字节变量

byte a = 3;
byte b = 4;

如果我对它们求和,sum的值是整数。

byte z = a+b  //error, left side is byte, right side is integer

为什么 b 是整数?

共有1个答案

养聪
2023-03-14

因为 Java 语言规范是这么说的

对操作数执行二进制数字提升(第5.6.2节)。

请注意,二进制数字提升执行值集转换(§5.1.13),并可以执行拆箱转换(§5.18)。

数值操作数上的加法表达式的类型是其操作数的提升类型。

关于数字推广,

加宽基元转换 (§5.1.2) 适用于转换以下规则指定的任一操作数或两个操作数:

    <李>[...] < li >否则,两个操作数都转换为< code>int类型。

因此,字节值被提升为 int 值并相加。表达式的结果是升级的类型,因此是 int

您可以简单地投射结果

byte z = (byte) (b + a);

但要小心溢位/下限溢位。

 类似资料:
  • 问题内容: 我有tyo字节变量 如果我将它们求和,则求和的值为整数。 为什么a + b是int? 问题答案: 因为Java语言规范这么说 对操作数(第5.6.2节)执行二进制数值提升。 请注意,二进制数值升级执行值集转换(第5.1.13节),并且可能执行拆箱转换(第5.1.8节)。 数字操作数上加法表达式的类型是其操作数的提升类型。 并且,关于数字促销, 扩展原语转换(第5.1.2节)适用于转换以

  • 问题内容: 我正在编写一个OutputStream,只是在OutputStream接口中注意到了这一点, 该调用将一个字节写入流中,但是为什么要使用整数作为参数呢? 问题答案: 实际上,最近我一直在处理字节,它们可能很烦人。它们在丝毫挑衅的情况下会向上转换为整数,并且没有指定将数字转换为字节的功能- 例如,8l将为您提供一个长值8,但对于字节,您必须说(byte)8 最重要的是,除非您使用数组,否

  • 问题内容: 我正在尝试获取python 3.4中字节字符串的第一个字符,但是当我对其进行索引时,我得到了: 正如我期望的那样,这对我来说似乎并不直观。 我发现我可以得到我期望的价值,但是对我来说,这就像是一个hack。 有人可以解释为什么会这样吗? 问题答案: 该类型是Binary Sequence类型 ,并且明确记录为包含0到255范围内的整数序列。 从文档中: 字节对象是单个字节的不可变序列。

  • 为什么第一个成功而第二个失败?人们可能期望它们产生相同的输出。

  • 答:[65,65,65,A]但我料到了[65,A]

  • 问题内容: 给出以下代码: (第4版记入:casablanca) 您认为将char转换为int 的“ 最佳方法 ”是什么?(“ 最佳方式 ”〜= 惯用方式 ) 我们不是在转换char的实际数值,而是在转换表示形式的值。 例如。: 问题答案: 怎么样