当前位置: 首页 > 面试题库 >

一个char和一个int相加的结果

郎嘉树
2023-03-14
问题内容

考虑以下代码:

System.out.println('G'+2);

输出为73。我能知道为什么以及如何吗?


问题答案:

在Java中,a charUTF-16编码中占16位。

G的unicode是U+0047二进制的0000 0000 0100 1111

当您将a char和an int(32位)相加时,charint通过插入0其二进制表示的开头来转换为。因此0000 0000 0100 1111被转换为0000 0000 0000 0000 0000 0000 0100 1111(十进制为71)。

这就是为什么你得到73



 类似资料:
  • 问题内容: 在添加时产生195。是输出数据类型还是? 问题答案: 添加Java字符,短裤或字节的结果是一个int: Java语言规范对二进制数值的促进: 如果任何一个操作数是引用类型,则执行装箱转换(第5.1.8节)。然后: 如果一个操作数的类型为double,则另一个将转换为double。 否则,如果其中一个操作数的类型为float,则另一个将转换为float。 否则,如果其中一个操作数的类型为

  • 问题内容: 据我了解,字符是单个字符,即字母, 数字 ,标点符号,制表符,空格或类似内容。因此,当我这样做时: 输出1正是我所期望的。那为什么当我这样做时: 我最终的输出是 50 吗? 问题答案: 之所以得到它,是因为它添加了char 的ASCII值。您必须先将其转换为int。

  • 问题内容: 我有三个简短的变量。当我将两个加在一起并将结果分配给第三个时,eclipse告诉我需要将其强制转换为short! 但是,当我先进行简单分配,然后进行增量分配时,一切都很好。 为什么是这样 ? 问题答案: JLS(第15.8.2节)说: “将二进制+运算符应用于两个数字类型的操作数时,将执行加法运算,从而得出这些操作数之和。” “对操作数执行二进制数值提升(第 5.6.2节 )。” 这意

  • 我试图在一系列列表中添加第一个值,然后从一系列列表中添加第二个值,依此类推。 例如: 因此,我希望 180, 210,240, 270, 300 到目前为止,我的代码是:

  • 如果和在一个平台上的表示形式相同,那么它们是严格相同的吗?根据C标准,这些类型在平台上的行为是否有任何不同? 这样做总是有效的吗: 我猜同样的问题也适用于short和int,如果它们碰巧是相同的表示。 在讨论如何为没有stdint.h的嵌入式C89编译器定义类似的typedef(即或)以及这是否重要时,出现了这个问题。

  • 问题内容: 我有两个成员相同,我想将一个结构复制到另一个结构,请参见下面的伪代码: 然后,我有结构的,而结构的,有什么办法复制的? 问题答案: 使用转换更改类型。以下代码使用转换将type 的值复制到type 的值: 游乐场的例子 该转换仅在基础类型,除了结构标签相同的工作。