gpt4 book ai didi

java - int(primitive) 值未隐式转换为 long(primitive)

转载 作者:行者123 更新时间:2023-12-01 07:22:51 27 4
gpt4 key购买 nike

我的问题看起来很简单。

int i =99999;
long square = i*i;
System.out.println(square); //prints 1409865409 - incorrect value

int i = 99999;
long square = (long) i*i;
System.out.println(square); // prints 9999800001 - correct value

看来是int的范围问题。但它不应该隐式地将产品类型转换为 long 吗?我在这里缺少什么?我知道如何使用 Math.pow(double,double) 函数并且它工作得很好。但我想知道上面输出的原因。

TIA。

最佳答案

在第一种情况下,结果首先作为 int 计算,然后才转换为 long

因此结果是错误的。

<小时/>

在第二种情况下,在计算结果之前,i 被转换为 long,因为 (long) (强制转换为 long ) 的优先级高于 *

因此是正确的结果。

关于java - int(primitive) 值未隐式转换为 long(primitive),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31036471/

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