gpt4 book ai didi

java - 分配参数类型对整数溢出的影响

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:04:58 25 4
gpt4 key购买 nike

在以下情况下,我很难理解 java 的行为。例如,我有一个 multiply 方法,它简单地将两个 int 值相乘并将结果打印到屏幕。

private static void multiply() {

int firstValue = Integer.MAX_VALUE;
int secondValue = 2; //double secondValue=2

double result = firstValue * secondValue;

System.out.println("Result is: " + result);
}

又因为整数溢出,结果为-2。然而,这里的计算结果被分配给一个 double,它接受的值比 firstValue 和 secondValue 的乘积大得多。

我对这个问题的问题是;

1- 为什么整数溢出发生,尽管结果被分配给一个 double 值?

2- 当我将 secondValue 的类型更改为 double(在评论中提到)时,结果是正确的。为什么当其中一个乘法器的类型更改为 double 时,Java 的行为会有所不同?

最佳答案

Java 不支持目标类型转换

private static void multiply() {

int firstValue = Integer.MAX_VALUE;
int secondValue = 2;
double one = 1.0;
double result = one * firstValue * secondValue;

System.out.println("Result is: " + result);
}

Target Type casting 表示将 result 的值转换为它必须分配给的变量的类型。
所以它不知道必须将结果分配给 double 变量。在这种情况下,int 是最大的数据类型,因此表达式以int 数据类型计算。
如果将它与 double 相乘,则表达式以 double 类型计算,答案正确。

关于java - 分配参数类型对整数溢出的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39937052/

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