gpt4 book ai didi

java - 将 int 转换为 long

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:34:23 28 4
gpt4 key购买 nike

我有一个关于在 java 中从 int 到 long 的转换的问题。为什么对于花车没有问题:

float f = (float)45.45;//compiles no issue.
float f = 45.45f; //compiles no issue.

但是对于 long 类型来说这似乎是个问题:

    long l = (long)12213213213;
//with L or l at the end it will work though.
long l = (long)12213213213L;

似乎一旦编译器由于超出范围的问题通知错误,它就会阻塞在那里,而不检查程序员可能计划的任何可能的转换。

您对此有何看法?为什么会这样,有什么特别的原因吗?

提前致谢。

最佳答案

However for the long type it seems to be a problem:

那是因为没有 L12213213213 是一个 int,而不是 long。由于该值超出了 int 的范围,因此会出现错误。

尝试类似的东西:-

System.out.println(Integer.MAX_VALUE);
System.out.println(12213213213L);

你会更好地理解。

float而言:-

float f = (float)45.45;

45.45 是一个 double 值,适合 double 的大小。所以,编译器不会有问题,然后它会执行 castfloat

It seems that once the compiler notify an error due to an out-of-range issue it blocks there without checking for any possible casting that the programmer might have planned.

没错。编译器首先检查有效值,此处为 int,然后它才能通过强制转换操作进一步移动。

所以,基本上在 longint 的情况下:-

long l = (long)12213213213;

您不会因为 cast 操作而收到错误,而是因为您的 numeric literal 不能表示为 int。因此,编译器没有在那里获得有效值来执行强制转换操作。

关于java - 将 int 转换为 long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14632893/

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