androidstudio/flatter中循环数的奇怪用法

2admgd59  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(362)

我刚在androidstudio玩过,发现了这个号码:819855292164868906
我的代码如下所示:

int x = 1;

for (int i = 0; i<64; i++)
{
x++;
x *= 10;
}
print(x);

不知什么原因,它被这个奇怪的数字卡住了。我原以为它会在整数线上跳来跳去,但对于所有高于64的数字,它都是这样。
它只发生在数字10、100或1000(或者我假设的任何10的因子)作为因子的情况下,在java中也会发生。
它被卡住的数字会根据位系统的类型和使用的数字而变化,但它一直被卡住。
似乎是一个奇怪的巧合关于整数线,但我真的想知道发生了什么。
更新:偶数因素似乎会发生,但奇数因素不会。不过,我还是不知道该怎么办。

6ovsh4lw

6ovsh4lw1#

我不太明白你想做什么,但事情是这样的:
首先,如果您想遵循“x”变量中值的“转换”,那么应该包括 print 循环中的语句:

for (int i = 0; i<64; i++)
{
x++;
x *= 10;
print(x); // <- inserted in here
}
print(x);

第二,如果你这样做,你应该能够看到这样的场景:
ix(在“x++”之后)在(x*=10)11220212103210211210之后。。。。。。。。。。。。
当i=63时,你的x将是=2111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110(2.1*10^127)。注意,这个数字远远大于java的int限制2147483647

相关问题