gpt4 book ai didi

Java位移操作: error converting int to byte

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

有人可以告诉我为什么下面的代码会抛出编译错误“无法从 int 转换为 byte”吗?

byte x = 2;  
byte y = (x >> 1);

我的意思是我明确地将 x 和 y 声明为字节,并且 'x >> 1' 将计算为 1,即仍然在字节范围内。
当我做类似的事情时

byte x = -2;  
System.out.println(x >>> 1);

我期望结果为 126,因为我在 b1111 1101 最左边的位移动了 0,即 0111 1110 。但控制台正在打印“2147483647”,因此看起来我的字节在 0 移入之前已转换为整数。这是为什么?请帮帮我。

最佳答案

仅仅因为 x >> 1 返回一个 int,因此您只需将其显式转换为 byte,如下所示:

byte y = (byte)(x >> 1);

另请注意,由于它是一个 int 运算符(或 long,具体取决于规范中的左侧操作符 cf §15.19),因此其所有操作数都必须属于 int 类型,这意味着在您的情况下 x 也将隐式转换为 int ,换句话说 x >> 1 相当于 (int)x >> 1

关于Java位移操作: error converting int to byte,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40493356/

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