java-0xFFFF是否需要转换为短?

java-0xFFFF是否需要转换为短?,第1张

概述我正在用Java开发Android2.3.3应用程序.我有以下代码:短CRCAux=0xffff;我在日食中收到警告,我必须将此值转换为short:短CRCAux=(短)0xffff;我正在将iOS应用程序迁移到Android,在iOS中,CRCAux是UInt16.为什么编译器需要将该值转换为short?short是否为带符号的int16bit数据

我正在用Java开发Android 2.3.3应用程序.

我有以下代码:

短CRCAux = 0xffff;

我在日食中收到警告,我必须将此值转换为short:

短CRCAux =(短)0xffff;

我正在将iOS应用程序迁移到AndroID,在iOS中,CRCAux是UInt16.

为什么编译器需要将该值转换为short? short是否为带符号的int 16bit数据类型?

解决方法:

Java编译器假定像0xFFFF这样的文字为int类型.因此,在这里得到警告是非常正确的,因为int值0x0000FFFF不能正确地放入短整数(在这种特殊情况下,编译器无法知道您不关心高位0的截断).

在这种情况下,如果将16位值写为有符号值,则编译器将接受它而无需强制转换:

short CRCAux = -1;

短类型可用于存储uint16的值(16位二进制补码毕竟只是16位,这仅是解释那些位的问题).

就是说,由于Java假定这16位代表一个带符号的二进制补码.通过许多运算符,您会获得非常不同的语义(移位,乘法/除法和更大或更小的比较).除非您确切知道自己在做什么,否则很可能会破坏您正在移植的代码. Char在这种情况下更适合,因为它提供了所需的“未签名”行为.

总结

以上是内存溢出为你收集整理的java-0xFFFF是否需要转换为短?全部内容,希望文章能够帮你解决java-0xFFFF是否需要转换为短?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1085903.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存