gpt4 book ai didi

java - Java中正负的情况下如何进行类型扩展?

转载 作者:行者123 更新时间:2023-12-01 19:48:29 25 4
gpt4 key购买 nike

正数和负数的类型转换有什么区别吗?

例如,如果我们有

short a = 100;

并将其放入

int b = a;

如果我们将“100”更改为“-100”,会有什么区别吗?我试图在IDEA中找到它的编译,但没有发现差异,但是我的导师向我提出了这个问题。

最佳答案

免责声明:由于这是一个家庭作业问题,我在这里所说的可能不是“预期”的答案。

这里涉及到两个转换。第一个是来自 int 的缩小原始转换。 (文字 100 计算为 int 类型的值)到 short 。第二个是从 short 开始的扩大原始转换。至int .

根据 JLS §5.1.2,第二次转换永远不会丢失信息。 :

A widening primitive conversion does not lose information about the overall magnitude of a numeric value in the following cases, where the numeric value is preserved exactly:

  • from an integral type to another integral type

  • from byte, short, or char to a floating point type

  • from int to double

  • from float to double in a strictfp expression (§15.4)

第一次转换是这样完成的,根据 JLS §5.1.3

A narrowing conversion of a signed integer to an integral type T simply discards all but the n lowest order bits, where n is the number of bits used to represent type T. In addition to a possible loss of information about the magnitude of the numeric value, this may cause the sign of the resulting value to differ from the sign of the input value.

两者-100100可用 short 表示,其范围是 -65536...65535,因此这里也不会丢失任何信息。

简而言之,是否使用100并不重要。或-100 ,结果将是 b将存储 100 的值或-100分别。

关于java - Java中正负的情况下如何进行类型扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52318213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com