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