为什么它被假定为 long 没有后缀
Why it's assumed long without suffix
以下代码无法编译,因为 x
的值是 long
值。所以在第二行中,不可能将长值分配给 y
.
long x = 10;
int y = 2 * x;
我的问题是:
第一行long
类型的变量中没有后缀L
,不是应该假定为int
类型吗?
在执行操作之前,您需要转换为 int
。
long x = 10;
int y = 2 * (int)x;
您的操作结果必须是 int
。如果不做缩小转换o.k.a。将您操作中的任何原始数字类型的操作转换为 int,这意味着您的操作结果将是范围更广的数字。通过强制转换,您让编译器知道您确信您的结果将在 int 范围内,这样它就知道您似乎不会丢失信息(即使您不强制转换并期望 double例如,但那是完全不同的事情)。您可以找到关于您的问题的出色解释 here。
以下代码无法编译,因为 x
的值是 long
值。所以在第二行中,不可能将长值分配给 y
.
long x = 10;
int y = 2 * x;
我的问题是:
第一行long
类型的变量中没有后缀L
,不是应该假定为int
类型吗?
在执行操作之前,您需要转换为 int
。
long x = 10;
int y = 2 * (int)x;
您的操作结果必须是 int
。如果不做缩小转换o.k.a。将您操作中的任何原始数字类型的操作转换为 int,这意味着您的操作结果将是范围更广的数字。通过强制转换,您让编译器知道您确信您的结果将在 int 范围内,这样它就知道您似乎不会丢失信息(即使您不强制转换并期望 double例如,但那是完全不同的事情)。您可以找到关于您的问题的出色解释 here。