0

以下代码无法编译,因为 的值x是一个long值。因此,在第二行中,不可能将 long 值分配给y.

long x = 10;
int y = 2 * x;

我的问题是:第一行在Ltype 的变量中没有后缀long,不应该假设它有 typeint吗?

4

2 回答 2

1

int在执行操作之前,您需要转换为。

long x = 10;
int y  = 2 * (int)x;
于 2016-04-12T20:13:56.793 回答
1

您的操作结果必须是int. 如果您不将操作中的任何原始数字类型的缩小转换 oka cast 操作转换为 int,那么这意味着您的操作结果将是更广泛的数字。通过强制转换,您可以让编译器知道您确定您的结果将在 int 范围内,并且它知道您似乎不会丢失信息(即使您不强制转换并期望双例如,但这是完全不同的事情)。您可以在此处找到有关您的问题的出色解释。

于 2016-05-28T18:58:20.647 回答