用JAVA代码复制的奇怪结果
我写了一个简单的Java代码
while (x != 0) {
ret = ret * 10 + x % 10;
x /= 10;
}
如果我给出x=1534236469,它将返回9646324351。然而,它实际上返回1056389758。 在调试时,我发现当它执行964632435*10时,结果是1056389758,而不是9646324350
有人能帮我理解这一点吗
你可以在下面搜索框中键入要查询的问题!
我写了一个简单的Java代码
while (x != 0) {
ret = ret * 10 + x % 10;
x /= 10;
}
如果我给出x=1534236469,它将返回9646324351。然而,它实际上返回1056389758。 在调试时,我发现当它执行964632435*10时,结果是1056389758,而不是9646324350
有人能帮我理解这一点吗
# 1 楼答案
将
ret
更改为long
输出是(正如您预期的,如果我使
ret
成为int
,我将获得您指定的输出)从Primitive Data Types
int
:默认情况下,int数据类型是一个32位有符号2的补码整数,其最小值为-2^31,最大值为(2^31)-1。在JavaSE8及更高版本中,可以使用int数据类型来表示无符号32位整数,其最小值为0,最大值为(2^32)-1。使用Integer类将int数据类型用作无符号整数。有关更多信息,请参见课程编号部分。向Integer类添加了静态方法,如compareUnsigned、divideUnsigned等,以支持无符号整数的算术运算